Spring4 Spring MVC实战(三)——Spring MVC不通过xml配置访问HMTL和其他静态资源

先看一下xml配置的,很多博客写出来都差不多,但是又不详细。
直接看一下老外的回答,How to handle static content in Spring MVC?


国内的博客里面一般就这样写。
  
    springMVC  
    org.springframework.web.servlet.DispatcherServlet  
    1  
      
  
      
        springMVC  
        /  
      


就写出一块,其实我们可以写的再详细点,贴个完整的路径和配置出来。


WebContent/WEB-INF/web.xml:




 
  springmvc
  org.springframework.web.servlet.DispatcherServlet
  1
 


 
  springmvc
  /
 


WebContent/WEB-INF/springmvc-servlet.xml:






    
 


    
 


    
 
 
 


    
 
  
  
  
 





在Spring MVC实战(一)——读《Spring in action》搭建最简单的MVC中继承AbstractAnnotationConfigDispatcherServletInitializer的类自动的配置了DispatcherServlet和
spring的应用上下文。所以我是没在web.xml中配置任何东西的。


但是我又不想在xml配置之后才能访问到静态资源和HTML,找来找去没有我想要的,那怎么办,还是看文档。http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-config-enable
思路就是找到要搜索的关键词,static resource。


看到了文档中的HTTP caching support for static resources



@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/public-resources/")
                .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());
    }


}
And in XML:



    


由于CacheControl是4.2版本之后才有的,我当前是4.1版本,所以去除setCacheControl方法。
现在的整个WebConfig.java



import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;


@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig extends WebMvcConfigurerAdapter {


  @Bean
  public ViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    return resolver;
  }
  
  @Override
  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
  }
  
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
	  registry.addResourceHandler("/static/**")
      .addResourceLocations("/static/");
  }
}




将test.html 置于WebContent/WEB-INF/static目录
此后再访问http://localhost:8080/projectname/static/test.html即可访问,而无需在web.xml配置任何的东西。


你可能感兴趣的:(mvcresources,spring,mvc,不通过XML配置访问HTML,Java配置静态资源访问,Spring4,Java框架)