现代Web应用程序广泛使用MVC(model、view、controller)模式,那么SpringMVC就恰好可以轻松帮我们搭建一个Web开发环境。而要搭好开发环境,熟知SpringMVC的三个XML(web.xml、application-context.xml、context-dispatcher.xml)就显得必不可少。而我呢,虽然前前后后左左右右也大见过三次Web框架,但每次都纠结的要了老命,那么痛定思痛,我决定下功夫把三个XML给搞得有条理些。
不过呢,作为一个软件开发的全栈工程师(自黑不是自夸,身为创业团队的负责人,打杂工的角色我就只能勉为其难),对于三个XML的见解只停留在认知的层面,整篇文章的叙述难免有不专业的地方,各位光临的朋友尽管指摘,我将虚心接受。
本篇先来介绍web.xml,了解其中必要的配置项,为以后顺利开发打下坚实基础。
###①、xml内容
###②、重点内容介绍
####1、contextConfigLocation
指定web项目从项目的src路径下加载application-context.xml,这是springMVC所必不可少的配置项,classpath前缀指定xml的路径在src下,这是我所喜爱的方式。
通过ContextLoaderListener自动装配ApplicationContext的配置信息,这里可以参照Spring中的ContextLoaderListener使用。
####2、characterEncodingFilter
关于字符集过滤器,就无需多言,从xml配置上就可以看得出来,其作用就是为了防止乱码,当然最开始在接触struts2的时候,被中文乱码困扰的心里都有了挫败感,但springMVC轻轻松松搞定了这个烦恼。
配置的方式基本固定如下:
当然了,如果你还有更多的兴趣,可以参照
Spring字符集过滤器CharacterEncodingFilter
####3、sessionValidate
sessionValidate的过滤器对于我的项目来说就很关键了,其主要作用就是为了在页面跳转时检查session有没有失效(包含超时、未登陆),然后呢,如果验证失败,可以跳转到首页登陆,登陆完成呢,又可以回到原始的页面(如下图所示,点击我的资源,系统发现我没有登陆,那么弹出登陆窗口,当我登陆完成后,显示我的资源页面)。

这个配置我稍候会用一整篇的文章来介绍,所以这里只做一个引导。
####4、DispatcherServlet
DispatcherServlet是springMVC自带的一个开箱即用的调度员,这个调度员就和context-dispatcher.xml联系起来了。
load-on-startup参数,按照《SpringMVC学习指南》所说的意思是:“如果它存在,则它将在应用程序启动时状态servlet并调用它的init方法,若不存在,则在该servlet的第一个请求时被加载”。这里我就不多做深究了,说白了,就是我还深究不到什么玩意。
url-pattern参数,这里我使用了"/"。按照《Spring实战》所说,url-pattern的匹配模式通常有“*.html”、“/*”等等,而他们各有各的弊端,而“/”模式声明它会作为默认的servlet并且会处理所有的请求,包括静态资源(关于静态资源,在稍候讲context-dispatcher.xml会详细说明)。
*.html 只能响应html格式的请求。 /*模式表示没有映射特定类型的响应,这会在处理图片或者样式css时带来不必要的麻烦。
####5、session-timeout
session-timeout就不做详细说明了,很直白,多说无益。有兴趣的话可以继续了解Java Web开发Session超时设置。
####6、404
通过该配置,当服务端出现404错误时就会跳转到404.jsp页面。
那么首先,我们来看一下普通的404页面写法。
当出现404时,首先提示用户页面访问不到,然后手动跳转到首页或者3秒后跳转到首页。