问题描述
我用springMVC做一个小例子 在web.xml里面如下配置<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>demo_project</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/resources/applicationContext.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>demo_project</servlet-name> <url-pattern>/</url-pattern><!--我不想再这指定一个扩展名/*.action--> </servlet-mapping></web-app>有一个JSP<%String path = request.getContextPath();System.out.println("path="+path);%><script src="<%=path%>/WEB-INF/jquery-1.3.1.js" type="text/javascript"></script><script type="text/javascript">$(document).ready(function(){ alert("Hello World!");});</script>我在浏览器里面输入http://localhost:8080/demo_project/index.jsp能出来页面但是无法引用到js2011-02-28 18:50:16,545 WARN [http-8080-2] org.springframework.web.servlet.DispatcherServlet.noHandlerFound(931) | No mapping found for HTTP request with URI [/demo_project/test.js] in DispatcherServlet with name 'demo_project'应用<script type="text/javascript" src="<%=path %>/test.js" />不是路径的问题。我能保证JS的路径是正确的我觉得是spring MVC拦截了这个请求但是为什么spring MVC又不拦截http://localhost:8080/demo_project/index.jsp请求呢?我准备用UrlRewriteFilter来解决这个问,不知道怎么实现哪位高人能帮我解决一下吗并说明一下拦截的问题,谢谢代码在附件中
解决方案
那是因为你的JS这些静态资源被当成请求了,但是又没有对应的方法.所以报错.解决办法就是加上扩展名.如果想去掉扩展名的话 必须UrlRewriteFilterspring3.0.4后可以用<resources mapping="/resources/**" location="/resources/" />来表示UrlRewriteFilter不过你要注意一句官方Demo的话引用<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->resources 是在你的根目录下的.http://liukai.iteye.com/admin/blogs/903801也可以在这下载一个spring3MVC的初级CRUD demo这个demo就包含了<resources>的用法.希望这个能帮到你Goodluck!
解决方案二:
如果你是用springmvc3.0+就太简单了在springmvc配置文件里加上...或者你参考我的文章http://linvar.iteye.com/blog/672191包你成功
解决方案三:
<script src="<%=path%>/WEB-INF/jquery-1.3.1.js" type="text/javascript"></script> 放在web-info 里???你说不是路径的问题,你打开页面 看源码 然后把js路径复制到ie打开 看是否可以看到jsjs加载不会受到mvc框架的拦截 如果你真的可以打开,你试试把js换个路径。