在jsp页面中插入图片,但却无法显示

今天在搭建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中项目文件名下的静态资源

猜你喜欢

转载自blog.csdn.net/zhou373986278/article/details/82859509