首页 > 编程知识 正文

jsp片路径没写错,就是显示出不来,jsp网页片不显示

时间:2023-05-05 11:27:24 阅读:262974 作者:133

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。