SpringMVC访问静态页面

简介:

Spring MVC显示静态页面

在前面搭建spring MVC环境时,我们设置了spring-mvc配置,通过tomcat来访问了index.jsp 
页面,但是当我将页面换成.thml的静态面之后就发现始终是404错误: 
 
为什么会有这样的错误呢?
如果在spring-mvc.xml中DispatcherServlet拦截”/”,为了实现REST风格,拦截了所有的请求,那么同时对.html,.js,*.jpg等静态文件的访问也就被拦截了。
现在考虑如何加载静态页面。

1、激活Tomcat的defaultServlet来处理静态文件

要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入Spring了,我想性能是最好的吧。

部分spring-mvc.xml

<servlet-mapping>   
<servlet-name>default</servlet-name>  
<url-pattern>*.jpg</url-pattern>     
</servlet-mapping> 

<servlet-mapping>       
<servlet-name>default</servlet-name>    
<url-pattern>*.js</url-pattern>    
</servlet-mapping>   

<servlet-mapping>        
<servlet-name>default</servlet-name>       
<url-pattern>*.css</url-pattern>      
</servlet-mapping>    
<!--要配置多个,每种文件配置一个 -->

<servlet-mapping>
<servlet-name>webAPP名<servlet-name>
<url-pattern>/<url-pattern>
<servlet-mapping>

2、 在spring3.0.4以后版本提供了mvc:resources

Xml代码

<!-- 对静态资源文件的访问 -->
<mvc:resources mapping="/images/**" location="/images/" />  

/images/** 映射到ResourceHttpRequestHandler进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache。

如果出现下面的错误,可能是没有配置 <mvc:annotation-driven />的原因。 

报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name ‘springMVC’

使用元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中, 
key为mapping的URI pattern值,而value为ResourceHttpRequestHandler, 
这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.

另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler, 
否则无法处理static resources request.

3、使用<mvc:default-servlet-handler/>

spring-mvc.xml部分代码

<beans>
    ......
    <bean>
        ......
    <bean>
    <mvc:default-serv;et-handler>
</beans>

<mvc:default-servlet-handler/>会把 “/**” url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回. 
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet

原文出自:http://elf8848.iteye.com/blog/875830

分类: JAVA, Spring
0
0
« 上一篇: SpringMVC之访问静态文件
» 下一篇: Spring MVC页面重定向
posted @ 2017-02-05 18:08 左正 阅读( 3203) 评论( 0) 编辑 收藏
 
相关文章
|
6月前
|
Java 数据库连接 mybatis
springboot访问jsp页面变成直接下载?
springboot访问jsp页面变成直接下载?
|
25天前
|
JavaScript Java 应用服务中间件
SpringMVC静态资源处理
SpringMVC静态资源处理
|
开发框架 前端开发 Java
【SpringMVC】入门、静态资源处理
Spring MVC 是一个基于 Java 的 Web 开发框架,它在构建 Web 应用程序时提供了良好的支持。,将应用程序的不同部分分离开来,使得开发更加在Spring MVC中,模型)表示应用程序的数据和业务逻辑,视图)负责渲染模型数据以生成最终的用户界面,控制器)接收来自用户的请求,并根据请求来调用相应的模型和视图。Spring MVC 提供了丰富的功能和特性,例如请求映射、请求参数绑定、数据校验、视图解析、拦截器、异常处理等。
|
前端开发 JavaScript Java
SpringMVC-访问静态资源
SpringMVC-访问静态资源
71 0
|
11月前
|
XML 缓存 前端开发
SpringMVC中处理静态资源的几种方式
SpringMVC中处理静态资源的几种方式
120 0
|
设计模式 开发框架 前端开发
springMVC的入门,学习,配置和静态资源访问问题的解决
# 引言 不知不觉,之前的文章生成器已经迎来了终章,这是网页版狗屁不通文章生成器的终章,也是狗屁不通文章生成器系列的最后一章。所以我决定精心打磨一下最后的终章部分,今天的更文我就写一个springMVC的学习部分。正好今天练习项目的开发在一些springMVC方面也是卡了很久。 # springMVC的简介 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 HttpServlet。一个Spring内置的MVC框架。与Spring有着很好的兼容。 而且SpringMVC比其他的很多 MVC 框架更具扩展性和灵活性。 # s
SpringMVC学习(二):访问指定页面
SpringMVC学习(二):访问指定页面
SpringMVC学习(二):访问指定页面
|
JavaScript 前端开发 Java
访问静态资源|学习笔记
快速学习访问静态资源
141 0
访问静态资源|学习笔记
springMvc42-处理静态资源
springMvc42-处理静态资源
83 0
springMvc42-处理静态资源
|
前端开发
SpringMVC静态资源问题
SpringMVC静态资源问题