此文记录学习《spring+springMVC+mybatis从零开始学》过程中出现的问题。
问题引入:web.xml配置文件中配置了springmvc过滤器,因此过滤了所有请求资源;在springmvc的配置文件中开启注解驱动以及静态资源映射,在路径正确的请求下仍然无法加载js文件,浏览器控制台出现400 bad request错误,提示$ not defined等错误信息。
项目名:chapter13
项目结构以及配置信息如图所示:
controller类:
springmvc-config配置信息:
jsp文件位于webapp目录下:
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.1.1.min.js"></script>
应用上下文如下:
如果配置正确,路径也正确但是无法访问静态资源,可尝试一下办法:
1、保持上述配置不变
2、导入catalina包,位于tomcat的lib下,添加到项目中
3、修改web.xml配置文件:
<!--配置默认Servlet-->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
然后rebuild project,restart server,重新访问即可:
数据成功交互,到此,已经解决了问题。
接下来,调皮一下,把jar包以及后来修改的配置去掉,rebuild & restart,会发现,在chrome浏览器中还是正常的,这个现象很奇怪,一开始我以为是IDEA的问题。
然后用Firefox试了一下,跟chrome不同,提示变量未定义:
也就是说,还是找不到静态资源文件jquery.js文件,然而chrome浏览器是可以找到的。
其实这是由于浏览器缓存的原因,按下Ctrl+Shift+Del,然后回车清理缓存,重新发送请求,是应答的。所以以上配置是有效的,取消注释,重新导入catalina包。重新启动容器,访问测试:
大功告成!