2 loser5628 loser5628 于 2017.09.12 15:41 提问

Spring的<mvc:resouces>访问静态资源无效 5C

是这样的,昨天我用 ${pageContext.request.contextPath} 访问项目内部的静态图片资源,在火狐上不行,但是在IE上却可以正常显示。但是今天再打开服务器,不管是哪个浏览器都无法显示图片。然后我就照着网上的配置了mvc:resources,但是不知道是不是路径问题,仍然无法显示,可是控制台什么错误也没报。
下面几张图是配置相关的文件,请大家帮着看看哪里有错?谢谢。

图片说明
图片说明
图片说明
图片说明
图片说明

7个回答

zry15671554200
zry15671554200   2017.09.12 16:05

可以写成: src="项目名/system/por.jpg" 格式再试一下

loser5628
loser5628 还是不行,唉,我以为好不容易后台和控制器写好了可以很快完工,结果卡在这了。。。
2 个月之前 回复
loser5628
loser5628   2017.09.12 15:46

大神在哪里?大神快来

qq_33727653
qq_33727653   2017.09.12 15:52

img标签里 的src里改成 ip:端口号/项目名/静态资源地址(就是你system开头那一串)形式!!!

qq_33727653
qq_33727653 看你论坛帖子中,怎么又出来了struts2 的过滤器?mvc过滤器把静态资源排除在外了,其他的过滤器都会拦截静态资源!
2 个月之前 回复
loser5628
loser5628 回复砸死接触: http://bbs.csdn.net/topics/392263051#
2 个月之前 回复
loser5628
loser5628 回复砸死接触: 不行啊,这个过滤器是事务控制,和资源访问应该不会冲突,http://bbs.csdn.net/topics/392263051 这也是我发的帖子,里面有补充的信息,你有空帮我看看,我是真的没办法了。
2 个月之前 回复
loser5628
loser5628 回复砸死接触: 不好意思看错了,我试试哈
2 个月之前 回复
loser5628
loser5628 回复砸死接触: 那这个不就相当于把这个过滤器去掉了吗?不包含所有页面。。。
2 个月之前 回复
qq_33727653
qq_33727653 ???我说的是 onpenSessionInViewFilter在spring中有对应的一个过滤器。要不你试试在你web.xml中的onpenSessionInViewFilter的init-param里加上< param-name >excludedPages< /param-name > <param-value>/system/*</param-value>试试!
2 个月之前 回复
loser5628
loser5628 回复砸死接触: 你说的过滤资源用的是不是 <servlet-name>default</servlet-name> 这个啊?我加到web.xml上去了,不管用啊。真急人
2 个月之前 回复
loser5628
loser5628 回复砸死接触: 是配置 <mvc:interceptors> 吗?我刚刚才注意到这个
2 个月之前 回复
qq_33727653
qq_33727653 onpenSessionInViewFilter这个是配置用来事务什么的吧? 百度是可以在spring中配置的。因为以我看是你mvc的配置过滤把静态资源排除在外了,但是你的这个配置没有排除静态资源!另外F12看看localhost:8888/BlogSystem/system/por.jpg报什么错,因为如果没显示,一般会有异常内容信息
2 个月之前 回复
loser5628
loser5628 onpenSessionInViewFilter配置不能动,因为后台数据查询是要它控制的,看看有没有别的方法,急死了~
2 个月之前 回复
loser5628
loser5628 回复砸死接触: localhost:8888/BlogSystem/system/por.jpg 的话是白板,也没有404,您教教我怎么配置吧,谢谢了。
2 个月之前 回复
qq_33727653
qq_33727653 楼主先去掉这个过滤试试,如果去掉了 可以访问静态资源了,那么楼主的这个过滤估计就不能再这里配置了,估计要在spring配置文件里进行细化配置了!
2 个月之前 回复
qq_33727653
qq_33727653 楼主看看你的onpenSessionInViewFilter配置 ,楼主的mvc是不会过滤拦截静态资源的,但是这个过滤器仍然过滤拦截了静态资源!!!
2 个月之前 回复
qq_33727653
qq_33727653 在窗口直接执行localhost:8888/BlogSystem/system/por.jpg,报404? 那看看别的兄弟的解答吧!
2 个月之前 回复
loser5628
loser5628 不行,还是显示不出来啊。。。
2 个月之前 回复
zry15671554200
zry15671554200   2017.09.12 15:54

建议你的静态资源使用绝对路径,然后再试一下。

loser5628
loser5628 是 /BlogSystem/system/por.jpg吗?那这样也不行啊、、、
2 个月之前 回复
loser5628
loser5628   2017.09.12 16:18

嗨嗨嗨,还有人吗?Help!

Routine_limon
Routine_limon   2017.09.12 16:54

${pageContext.request.contextPath}/system/por.jpg,试试看

loser5628
loser5628 一开始就用的是这个,不行才换别的法子,我发现把SRC写成 system/por.jpg 后IE上显示尺寸了,但是仍然无法显示,记得刚建成时还好好的,突然就不行了
2 个月之前 回复
ShewMi
ShewMi   2017.09.12 23:24

我告诉你是怎么回事,首先你这个项目是运行在eclipse上,那么你的图片存放的位置是workspace-项目名-system目录下,那么访问的时候相对路径也就是system没错,但是,你应该是运行在eclipse自建的一个tomcatserver上,这个和正式的tomcat工作目录有区别,实际上你的项目运行时所读取的所有资源并不是在这个workspace-项目名里面的路径,而是读取自建的tomcatserver的工作目录里面才是,我吧这个路径copy给你:
D:\Workspace1.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps temp1也有可能是temp0
在这个路经下你会看到你部署的项目,这里面的文件才是它正真读取的。如果这里面没有对应的图片,页面就显示不出来,所以你应当这样处理:
1、将图片文件夹拷贝一份到这路径下,这也是最简单的方式
2、将项目运行在正式的tomcatserver中,那么不存在此问题,其实eclipse在server那里是可以设置的
3、映射到物理磁盘上面的某个文件夹,这也是比较麻烦的方式。

ShewMi
ShewMi 吃了个饭回来,刚才所说的拦截器都是指springmvc的,至于服务器的filter,也就是过滤器,也是会无区别对待,这个额看情况,建议不管是servlet还是filter,都是用*.do或者*。mvc,一了百了,如果filter没有提供此url-patter的处理,则需要自己实现静态资源请求的判断
2 个月之前 回复
ShewMi
ShewMi 使用tomcat的默认servlet来处理,这样就不会从spring的servlet流转到拦截器了:<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/system/*</url-pattern> </servlet-mapping>
2 个月之前 回复
ShewMi
ShewMi 回复loser5628: 之前没细看,这种情况通常是配置了拦截器造成,因为拦截器还是会对静态资源无区别对待。有两种方式:
2 个月之前 回复
loser5628
loser5628 这个我一开始就注意到了,这些问题如果真是因为这个应该不用来问大家,关键是不是出在这啊。
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片