Spring MVC JSP页面无法加载.jpg .css .js的解决方案


原文链接:


点击打开链接


最近想自己用很牛逼的Spring+Hibernate开发框架动手撸一个博客系统,不要问我为什么,个人觉得Java比PHP的安全性更高,而且实在没有心情去看wordpress下php文件冗长的代码,就暂时性放下了自己去制作一个wordpress的主题。


边玩边学之后,对HTML5,CSS,JavaScript都有了一定点了解,晚上断电之后,自己用记事本撸了一些html文件,准备第二天整合到Spring项目中。接着整合打时候,出现了JSP页面无法加载  .jpg  , .css ,.js文件,路径都没有错,花了我几个小时,查遍了网上 的办法,总算说解决了。真是日了狗了。


之所以不能加载这些文件的原因在这里,web.xml文件下又这样一段配置:


<!-- Processes application requests -->

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>



<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>default</servlet-name>

<url-pattern>*.png</url-pattern>

<url-pattern>*.js</url-pattern>

<url-pattern>*.css</url-pattern>

<url-pattern>*.jpg</url-pattern>

</servlet-mapping>

 <servlet-mapping>

         <servlet-name>appServlet</servlet-name>

     <url-pattern>/</url-pattern>

</servlet-mapping>

<p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">加粗的地方<strong><url-pattern>/</url-pattern>,这个“/”一出现就拦截来所有的请求,包括我们使用<img src="xxx.jpg"></strong></p><p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">或者说<link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />,文件的路径都给拦截下来了,而所有available的请求url都是在Constroller里使用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)这样的注解配置的,这样的话对js/css/jpg/gif等静态资源的访问就会得不到。。</p><p style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px; line-height: 24px;">我也试过这个办法,再web.xml里面加入这个段代码,</p>
<pre name="code" class="html"> <servlet-mapping>

           <servlet-name>default</servlet-name>

          <url-pattern>*.png</url-pattern>

          <url-pattern>*.js</url-pattern>

          <url-pattern>*.css</url-pattern>

         <url-pattern>*.jpg</url-pattern>

</servlet-mapping>



Tomcat默认的servlet是default,据说是可以这样找到我们要用的静态文件,我试过之后就挂掉, 可能说我自己配错了。

后来我在webapp目录下新建了img,css,js文件夹,把静态资源放进去,然后在servlet-context.xml配置里增加了这么几行:


<mvc:resources location="/img/" mapping="/img/**"/>

 <mvc:resources location="/js/" mapping="/js/**"/>

img/**映射到 ResourceHttpRequestHandler进行处理,location指定静态资源的位置。调试成功,自我总结就是Spring太屌,得花大量时间去实践,然而感觉是日了狗了。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章