2016-09-01 5 views
0

Я разрабатываю веб-приложение с весенним ботинком, службой обслуживания Джерси и встроенным причалом.Отображение запроса загрузки Spring Контроллер для корневого пути, работающего только с двойной косой чертой

Я разбиваю голову на стену несколько дней, просто хотел, чтобы запрос на: localhost: 8082 перенаправит меня на index.html.

мой index.html расположен в /resources/static/index.html

Я написал Спринг загрузочный класс контроллера с @RequestMapping:

@Controller 
public class WebConfig extends WebMvcConfigurerAdapter { 

@RequestMapping(value = {"","/"}, method = RequestMethod.GET) 
public String mainPage(HttpServletRequest request) { 
    String pathInfo = request.getRequestURI(); 
    return "redirect:index.html; 
    } 


} 

Однако, когда я звоню: локальный: 8082 он не перенаправляет меня index.html

только когда я звоню с двойным резким снижением: локальный: 8082 //

Может ли один помочь мне?

Моя весна загрузочный класс SpringBootServletInitializer выглядеть следующим образом:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan(basePackages = { "com.wfm.api"}) 
public class Launcher extends SpringBootServletInitializer { 

private static ApplicationContext applicationContext = null; 


public static void main(String[] args) throws Exception { 
    String mode = args != null && args.length > 0 ? args[0] : null; 

     // argument parameters 'stop' that comes from class WindowsServiceLauncher which in lance when starting windows service using procrun 
     if (applicationContext != null && mode != null && "stop".equals(mode)) { 
      System.exit(SpringApplication.exit(applicationContext, new ExitCodeGenerator() { 
       @Override 
       public int getExitCode() { 
        return 0; 
       } 
      })); 
     } 
     else { 
      SpringApplication app = new SpringApplication(Launcher.class); 
      applicationContext = app.run(args); 
     } 
} 

@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(Launcher.class); 
} 

/** 
* Registrating REST Servlet 
*/ 
@Bean 
public ServletRegistrationBean jersyServletRegistration() { 
    ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(),"/pethome/api/rest/*"); 
    Map<String,String> params = new HashMap<String,String>(); 
    params.put(ServletProperties.JAXRS_APPLICATION_CLASS, JersyRestConfigurer.class.getName()); 
    //params.put(ServerProperties.WADL_GENERATOR_CONFIG, WadlGeneratorConfigurer.class.getName()); 

    registration.setInitParameters(params); 
    return registration; 
} 


/** 
* Define Spring boot Server container , We use Jetty 
*/ 
@Bean 
public EmbeddedServletContainerFactory containerFactory() { 
    final JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory = new JettyEmbeddedServletContainerFactory() { 
     @Override 
     protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(Server server) { 
      return new JettyEmbeddedServletContainer(server); 
     } 
    }; 
    jettyEmbeddedServletContainerFactory.addServerCustomizers(new JettyConfigurer()); 
    return jettyEmbeddedServletContainerFactory; 
} 


@Override 
public void onStartup(ServletContext servletContext) throws ServletException { 
    WebApplicationContext rootAppContext = createRootApplicationContext(servletContext); 
    if (rootAppContext != null) { 
     //servletContext.addListener(new MailSenderLoadingListener()); 
    } 
    else { 
     this.logger.debug("No ContextLoaderListener registered, as " 
       + "createRootApplicationContext() did not " 
       + "return an application context"); 
    } 
} 

}

Спасибо за ваши ответы.

+0

Возможный дубликат [перенаправление в Spring MVC] (http://stackoverflow.com/questions/4584410/redirect-in-spring-mvc) – Magnus

ответ

-1

По весне 3.0.5 пытаются использовать как этот

@RequestMapping(value={"/", " * "}) 

Здесь «*» соответствует любому, так что это будет по умолчанию обработчик в случае каких-либо других.

+0

он делает перенаправление на http://localhost:8082/index.html, но затем я получаю сообщение со страницы: «Локальная страница не работает», также все остальные пути к localhost получают ту же ошибку – lshaked

0

Я нашел проблему.

У меня есть пристани-rewite.xml и настроен там:

<Call name="addRule"> 
      <Arg> 
       <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule"> 
        <Set name="regex">/</Set> 
        <Set name="replacement">/welcome.html</Set> 
       </New> 
      </Arg> 
     </Call> 

Таким образом, по умолчанию каждый вызов корня: локальный: 8082 перенаправляется Welcome.html, нужно Chenge его index.html

-3

В основном в java, когда вы хотите написать «/», вы должны написать «//». Вы можете попробовать это.

@RequestMapping("//") 

Все в порядке со мной. Я надеюсь, что это может вам помочь :)

+0

Я считаю, что вы думаете о обратной косой черты (\); Слайды с косой чертой (/) могут быть написаны на Java. –