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

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


国内的博客里面一般就这样写。
[html]  view plain  copy
  1. <servlet>    
  2.     <servlet-name>springMVC</servlet-name>    
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
  4.     <load-on-startup>1</load-on-startup>    
  5.     </servlet>    
  6.     
  7.     <servlet-mapping>    
  8.         <servlet-name>springMVC</servlet-name>    
  9.         <url-pattern>/</url-pattern>    
  10.     </servlet-mapping>    


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


WebContent/WEB-INF/web.xml:
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  5.          http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.   
  7.   
  8.  <servlet>  
  9.   <servlet-name>springmvc</servlet-name>  
  10.   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  11.   <load-on-startup>1</load-on-startup>  
  12.  </servlet>  
  13.   
  14.   
  15.  <servlet-mapping>  
  16.   <servlet-name>springmvc</servlet-name>  
  17.   <url-pattern>/</url-pattern>  
  18.  </servlet-mapping>  
  19. </web-app>  


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


[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.  xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  7.  http://www.springframework.org/schema/mvc  
  8.  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
  9.  http://www.springframework.org/schema/context  
  10.  http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  11.   
  12.   
  13.     <!-- not strictly necessary for this example, but still useful, see http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-controller for more information -->  
  14.  <context:component-scan base-package="springmvc.web" />  
  15.   
  16.   
  17.     <!-- the mvc resources tag does the magic -->  
  18.  <mvc:resources mapping="/resources/**" location="/resources/" />  
  19.   
  20.   
  21.     <!-- also add the following beans to get rid of some exceptions -->  
  22.  <bean      class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  23.  <bean  
  24. class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  
  25.  </bean>  
  26.   
  27.   
  28.     <!-- JSTL resolver -->  
  29.  <bean id="viewResolver"  
  30.   class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  31.   <property name="viewClass"  
  32.    value="org.springframework.web.servlet.view.JstlView" />  
  33.   <property name="prefix" value="/WEB-INF/jsp/" />  
  34.   <property name="suffix" value=".jsp" />  
  35.  </bean>  
  36.   
  37.   
  38. </beans>  



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



[html]  view plain  copy
  1. @Configuration  
  2. @EnableWebMvc  
  3. public class WebConfig extends WebMvcConfigurerAdapter {  
  4.   
  5.   
  6.     @Override  
  7.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  8.         registry.addResourceHandler("/resources/**")  
  9.                 .addResourceLocations("/public-resources/")  
  10.                 .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());  
  11.     }  
  12.   
  13.   
  14. }  
  15. And in XML:  
  16.   
  17.   
  18. <mvc:resources mapping="/resources/**" location="/public-resources/">  
  19.     <mvc:cache-control max-age="3600" cache-public="true"/>  
  20. </mvc:resources>  


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



[java]  view plain  copy
  1. import org.springframework.context.annotation.Bean;  
  2. import org.springframework.context.annotation.ComponentScan;  
  3. import org.springframework.context.annotation.Configuration;  
  4. import org.springframework.web.servlet.ViewResolver;  
  5. import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;  
  6. import org.springframework.web.servlet.config.annotation.EnableWebMvc;  
  7. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  
  8. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
  9. import org.springframework.web.servlet.view.InternalResourceViewResolver;  
  10.   
  11.   
  12. @Configuration  
  13. @EnableWebMvc  
  14. @ComponentScan("spittr.web")  
  15. public class WebConfig extends WebMvcConfigurerAdapter {  
  16.   
  17.   
  18.   @Bean  
  19.   public ViewResolver viewResolver() {  
  20.     InternalResourceViewResolver resolver = new InternalResourceViewResolver();  
  21.     resolver.setPrefix("/WEB-INF/views/");  
  22.     resolver.setSuffix(".jsp");  
  23.     return resolver;  
  24.   }  
  25.     
  26.   @Override  
  27.   public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {  
  28.     configurer.enable();  
  29.   }  
  30.     
  31.   @Override  
  32.   public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  33.       registry.addResourceHandler("/static/**")  
  34.       .addResourceLocations("/static/");  
  35.   }  
  36. }  
转载自:http://blog.csdn.net/iaiti/article/details/52778944
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值