图片不显示
今天在搭建ssm框架式进行测试,发现请求的jsp文件的图片无法显示。查看页面源代码为:
jsp页面的代码为:
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><img src="${pagecontext.request.contextpath }/images/welcome.gif" width="145" height="46" //></td>
</tr>
</table>
</body>
通过localhost:8080/yycgmain/images/welcome.gif是404。
问题的原因就是SpringMVC对于静态资源的拦截,在web.xml中,我在DispatcherServlet之后设置了
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextconfiglocation</param-name>
<param-value>classpath:springmvc/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mAPPing>
<servlet-name>springMVC</servlet-name>
<!-- 表示前端控制器拦截的请求类型,这里表示拦截所有但是不包括.jsp的请求,可以不使用action后缀来访问 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
这里表示拦截了除.jsp结尾的所有请求,当然相应的css/js/img等资源的请求也被拦截了。
解决方法:
方法1:在springmvc.xml中添加<mvc:resources>,列出需要加载的静态资源所在的位置,这样请求来时默认servlet来处理这些静态资源,而不是通过前端控制器。
<!-- 加载静态资源 -->
<mvc:resources location="/images/" mapping="/images/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/styles/" mapping="/styles/**"/>
其中的location标识项目目录webapp下的静态资源的实例路径。mapping表示映射的虚拟路径,即请求中使用的路径。此项目中的静态资源文件夹如下图所示:
方法2:在web.xml中使用默认的servlet,专门用来处理静态资源请求:
<!-- 使用默认servlet处理静态资源请求 -->
<!--后缀名为css/gif/jps/png/js的静态资源不拦截-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
注意:此servlet的配置要放在前端控制器的配置之前,否则会失效
附录:
1.pageContext.request.contextPath表示的究竟是什么:
该项目的结构如下:
根据页面源代码可知,${pageContext.request.contextPath}=yycgmain,即当前项目的名称。在tomcat的webapps下,有着名为yycgmain的文件夹,即此项目的工程目录:
因此,jsp页面中常用的src="${pageContext.request.contextPath }/images/welcome.gif表示访问tomcat下webapps中项目文件名下的静态资源
相关阅读
一:一般为啥要把jsp页面放在WEB-INF呐? 这样主要是为了网站的安全的角度来说的,WEB-INF是安全目录Tomcat 默认的访问路径是W
【Android】当关闭通知权限后无法显示Toast的解决方案
##前言既然能看到这篇博文,就说明你一定看过这个【Android】当关闭通知消息权限后无法显示系统Toast的解决方案 。然后,我很开心的
<script type="text/javascript"> window.onload=swapimg; function swapimg() { var img=document.getElement
很多用户会在网上搜索一些文档,很多文档来源于百度文库,如果发现在电脑中通过浏览器打开百度文库后,发现里面的内容或图片无法显示,那
wegame延续了TGP的一切风格包括各种毛病,最近很多人反应wegame无法显示网页,网页白屏下面由我带给大家wegame无法显示网页白屏的解