发表于: 2017-11-01 22:37:11
1 813
一.今日完成
1.学习静态资源处理
由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射时,往往采用*.do、*.html如I等方式。这就决定了请求URL必须是一个带后缀,而无法采用真正RES丁风格的URL.因为良好的REST风格的资源URI,不希望带.html或.do等后缀.
在web.xml中DispatcherServlet的配置,使其可以获所有的请求:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- ContextconfigLocation按照Spring资源路径的方式指定加载 DispatcherServlet
上下文对应的Spring配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/disaptcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--<url-pattern>*.html</url-pattern>-->
<url-pattern>/</url-pattern>
</servlet-mapping>
通过<url-pattern/>的配置,所有URL请求都将被Spring MVC的DispatcherServlet截获,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因找找不到对应的处理器而导致错误。
2.解决措施
(1)采用<mvc:default-servlet_handler/>
在dispatcher-servlet.xml里配置<mvc:default-servlet-handler/>后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它将充当一个检查员的角色,对进入DispatcherServlet的URL进行筛查.如果发现是静态资源的讲求,就将该请求转由web应用服务器默认的Servlet处理,如果不是静态资源的请求,则由DispatcherServlet继续处理.
(2)采用<mvc:resources/>
<mvc:default-servlet-handler/>将静态资源的处理经由Spring MVC框架交回Web应用服务器。而<mvc:resources/>则由Spring MVC框架自己处理静态资源,并添加一些有用的附加功能。
1)<mvc:resources/>允许静态资源放置在任何地方,如WEB-INF邗目录下、类路径下等,甚至可以将JS,CSS等静态文件打包到JAR包中。通过location属性指定静态资源的位置,由于location属性是Resource类型,因此可以使用诸如"classpath:"等的资源前缀指定资源位置。
2)可以通过cacheSeconds属性指定静态资源在浏览器端的缓存时间,一般可将该时间设置为一年,以充分利用浏览器端的缓存。在输出静态资源时,会根据配置设置好响应报文头的Expires和Cache-Control值。
在dispatcher-servlet.xml中加入如下设置:
<mvc:resources mapping="/resources/**" location="/,classpath:/META-INF/publicResources/"cache-period="31536000"/>
以上配置将Web根路径"/"及类路径/webapp/WEB-INF/下的目录映射为resources路径。
在jsp页面中可以使用<c:url>标签来引用资源文件
二.明日计划
把SSM框架的配置整理完,提交任务七
三.遇到问题
暂无.
四.收获
以上.
评论