2015-04-10 3 views
1

Я работаю над POC, используя Spring с настройкой на основе аннотаций. Работая над ней, я столкнулся ниже вопросы:Невозможно загрузить страницы html при использовании конфигурации аннотаций Spring

  • Когда я использую диспетчерское отображение сервлета, как /, я могу получить доступ к контроллерам, но не HTML-странице.

  • Когда я изменяю отображение на /**, тогда я могу получить доступ к странице html, но не к контроллерам.

Я не уверен, должен ли я добавить еще один сервлет диспетчера и добавить в него одно отображение. Я также попытался передать оба отображения в диспетчерском сервлете, но это не сработало.

Возможно, кто-то может помочь мне с проблемой.

Ниже приведен код:

AppConfig

package com.upload.config; 

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Import; 

@Configuration 
@Import(WebConfig.class) 
@ComponentScan(basePackages= "com.upload") 
public class AppConfig { 
} 

WebConfig

package com.upload.config; 

import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter{ 
} 

ServletInitializer

public class ServletInitializer extends AbstractDispatcherServletInitializer { 

@Override 
protected WebApplicationContext createServletApplicationContext() { 
    final AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
    context.register(AppConfig.class); 
    context.getEnvironment().setActiveProfiles("prod"); 
    return context; 
} 

@Override 
protected String[] getServletMappings() { 
    return new String[] {"/"}; 
} 

@Override 
protected WebApplicationContext createRootApplicationContext() { 
    return null; 
} 
} 

FileUploadController

@Controller 
@RequestMapping("/ws") 
public class FileUploadController { 

@RequestMapping(value="hello",method=RequestMethod.GET) 
public String hello(){ 
    return "Hello"; 
} 

} 
+0

Прочитайте http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-config-static-resources и http: //docs.spring. И.О./весна/Docs/ток/весна-каркасного ссылка/htmlsingle/# MVC-умолчанию-сервлет-обработчик –

ответ

3

Используйте следующий подход: Вам нужно добавить addResourceHandler подобрать страницу HTML с веб-инф структура WEB-INF/Views/зрителя, где все ваши страницы, как: js/html/css/images и т. д. Вы можете удалить свою AppConfig .java, показанную выше.

package com.Configuration.si.config; 

@Configuration 
@ComponentScan("com.Configuration.si") 
@EnableWebMvc 
public class Configuration extends WebMvcConfigurerAdapter { 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/viewer/**","/lib/**","/js/**","/images/**","/css/**","/swf/**") 
      .addResourceLocations("/WEB-INF/views/viewer/","/WEB-INF/views/lib/","/WEB-INF/views/js/","/WEB-INF/views/images/","/WEB-INF/views/css/","/WEB-INF/views/swf/") 
      .setCachePeriod(315569126); 
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
} 

Также Добавить этот класс в структуре

package com.Configuration.si.config; 

@Configuration 
public class WebMvcConfiguration { 

@Bean 
public InternalResourceViewResolver internalResourceViewResolver() { 
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver(); 
    internalResourceViewResolver.setViewClass(JstlView.class); 
    internalResourceViewResolver.setPrefix("/WEB-INF/views/"); 
    internalResourceViewResolver.setSuffix(".jsp"); 
    return internalResourceViewResolver; 
    } 
} 

Внутренний вид распознаватель рассосется страницу, которую нужно с помощью model.setViewName («Вход»); в контроллере. Надеюсь, это поможет вам

Смежные вопросы