上篇博客介绍了springMVC参数的传递,今天我们来说说springMVC静态文件的访问。我们所说的静态文件通常是指只有文本或图片,且不会通过后台的控制来更改的元素。如果可以通过后台控制就不属于静态文件了。我们这里要讲一下图片、js文件。
我们首先来说springMVC是如何访问图片的。首先先建目录,建img、js、css目录,这三个目录是最基础的东西。
然后创建一个jsp页面。
<body> <h>图片访问</h> <div> <img alt="图片" src="../img/leave.jsp"> </div> </body>
创建一个java类ImgController.java
public class StaticController extends MultiActionController { public ModelAndView img(HttpServletRequest request, HttpServletResponse response){ return new ModelAndView("/staticFile"); } }
配置配置文件spring-servlet.xml
<!-- 一样,给咱们新建的项目StaticController建立解析器--> <bean name="/test1/img" class="com.tgb.web.controller.StaticController"> <property name="methodNameResolver"> <ref bean="paramMethodResolver"/> </property> </bean>
现在我们来理一下整个流程:首先前端访问到达mapping,mapping再去解析java类里面的方法,然后再回到jsp,jsp页面再去拿到这个图片。
后续.................
对于图片无法正常访问,如下所示:
解决方法:在spring-servlet.xml文件中配置:
<mvc:resources location="/img/" mapping="/img/**" />
这是什么原因导致的呢?我们来看一下web.xml配置文件中的配置:
<servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern><span style="font-family:KaiTi_GB2312;">/</span></url-pattern> </servlet-mapping>
原来我们刚刚在spring-servlet.xml配置文件中配置的那个标签的意思就是过滤,而我们刚刚看到的在web.xml配置文件中拦截了所有的请求,但是遇到这样的标签时就告诉web.xml这个请求你不要拦截了就直接访问就可以了。这样我们就能访问到图片了。
下面我们接着来说一下springMVC如何访问js文件的.第一步我们知道是在spring-servlet.xml配置文件中配置。但是为了对比出效果,我们先不引入静态资源访问,也就是在spring-servlet.xml中先不配置js文件。
<pre name="code" class="javascript"><mvc:resources location="/img/" mapping="/img/**" /> <mvc:resources location="/js/" mapping="/js/**" />
然后新建jsp页面,引入jquery包,进行jquery加载。
<html> <head> <!--引入jquery包--> <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Inset title here</title> <!-- jquery代码,最经典的就是jquery的加载 --> <script type="text/javascript"> $(document).ready(function(){ alert(11); }); </script> </head> <body> <h>jquery请求</h> </body> </html>
在java类中写jquery方法
public ModelAndViewjquery(HttpServletRequest request, HttpServletResponse response){ return new ModelAndView("/jquery"); }
运行效果为:
下面我们将spring-servlet.xml配置文件中的静态解析器启用
<mvc:resources location="/img/" mapping="/img/**" /> <mvc:resources location="/js/" mapping="/js/**" />
则此时运行效果会弹出对话框:
************************************************************************************************
后话:
其实你发现没有,配置文件的正确配置在整个项目的过程中起着十分重要的作用。可能刚开始的时候我们理解配置文件会有些吃力,不过没关系,了解整个过程的运行机理,一点点的顺着程序运行的状态去跟进就会显得轻松好多。好了,下篇博客我们接着聊springMVC.欢迎大家在下方留言和我沟通交流,我们一起学习一起进步!