Spring中ContextLoaderListener和DispatcherServlet的区别

来源:互联网 发布:打电话软件下载 编辑:程序博客网 时间:2024/05/20 11:33

首先看web.xml文件中关于Spring MVC的配置。一般我们会用到两个类ContextLoaderListener和DispatcherServlet,这两个类都会加载spring的一些配置,而且在一些情况下我们可以只配置DispatcherServlet就能正常运行项目,这两个类有什么区别呢?从加载的配置文件来说ContextLoaderListener的配置文件位置由全局参数contextConfigLocation指定,DispatcherServlet的配置文件默认是${servlet-name}-servlet.xml(路径有优先级和覆盖),也可以通过该servlet配置中的contextConfigLocation参数指定。

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
其次,两者初始化配置文件后的内容保存的位置不一样,ContextLoaderListener加载的配置属于全局,DispatcherServlet加载的配置的作用域是该servlet实例。如果要使用WebApplicationContextUtils类,需要配置ContextLoaderListener。
可以配置多个DispatcherServlet的servlet实例,拦截不同的url做各自的业务:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>pages</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:pages-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pages</servlet-name>
<url-pattern>/pages/*</url-pattern>
</servlet-mapping>

如有错误不足之处,恳请留言指正。
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卵泡突然不长了怎么办 想怀孕卵泡不长怎么办 吉吉影音下载慢怎么办 辞职后社保断了怎么办 2岁泡泡糖咽下去怎么办 我在拼多多开团怎么办 养了一条鱼死了怎么办 鱼缸的鱼尾巴烂怎么办 捡到玉佛吊坠该怎么办 晚上睡不踏实多梦易醒怎么办 红米3s蓝屏怎么办 吃饭没给钱跑了怎么办 刚出生的宝宝红屁屁怎么办 刚出生的宝宝红屁股怎么办 眼镜配高了25度怎么办 广州摇号中签后怎么办 深圳摇号中签后怎么办 皮肤被紫外线晒伤怎么办 脸被太阳晒过敏怎么办 星际2买了的怎么办 脸被风吹红了怎么办 天谕背包满了怎么办 剑灵没用的武器怎么办 人老实心太善良怎么办 雷蛇鼠标滚轮响怎么办 唱歌唱的嗓子疼怎么办 额头又高又凸怎么办 40多岁满头白发怎么办 被梅毒的针扎了怎么办 小腿上有肌肉块怎么办 血沉方程k值高怎么办 婚后父母给的钱怎么办 如果高考志愿没被录取怎么办 买到二手车退档怎么办 驾考过期怎么办退档 我和情人分手了怎么办 90多岁老人骨折怎么办 北京车卖了车牌怎么办 高速倒车扣12分怎么办 超速50扣12分怎么办 奉子成婚后悔了怎么办