上篇博客介绍了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.欢迎大家在下方留言和我沟通交流,我们一起学习一起进步!