前言
针对一个项目而言,通常会有几类XML文件需要书写。
- web.xml
- spring-context.xml
- spring-mvc.xml
- other.xml
- ...
不管有多少配置文件,可以肯定的一点,这些配置文件,都是在web.xml中被指定的。
后续慢慢阐述。
web.xml
web.xml可以理解为一个Java Web项目入口。在web.xml中通常会有如下几种类型的节点存在,按照加载顺序排列。
Listener
此为监听器,在上面3个中是后弦加载的,表示监听某个动作是否发生,发生后要进行什么动作。
监听--就是在进行某种各个范围(application,session,request)中有相关值的设置、修改、替换的时候,这些操作都会触发事件,而Java中事件的代理机制,事件处理是利用listener机制,所以为了在事件触发的时候能够使自己能够采取相应的措施,就需要---->继承这样的listener,在listener中覆写相应的方法,覆写相应的事件处理方法,在对应的方法中处理对应的事件,也就是进行了监听
参考链接:安卓中监听者模式
在Java Web中,监听对象通常有3个:
- ServletContext(Spring中关于ServletContext对类签名如下:
public class ContextLoaderListener extends ContextLoader implements ServletContextListener { ..... }
- Request
- Session
Spring的监听器需要设置context-param来指定Spring配置文件的路径。
<!-- 1. Spring自动扫描 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:spring/application-*.xml classpath*:spring/webservice.xml </param-value> </context-param>
Filter
此为过滤器,为第二个加载的。任何一个被指定的路径,都需要经过这个过滤器过滤。通常使用到Filter有:
- 编码转换过滤器
- 安全处理XSS、SQL注入拦截过滤器
- 为支持而创建的Put过滤器
- 数据连接池Druid过滤器
- 。。。
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Servlet
Servlet是三类中最后加载的,通常就是作为控制层存在,在SSM中属于SpringMVC中进行管理的。
<!-- 2. SpringMVC配置 --> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成 *.do ,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping>