web.xml核心配置文件中的内容
**前言:**创建一个web项目,首先从web.xml开始,是web应用的入口。其中的核心配置文件有哪些呢contextConfigLocationcontextConfigLocation 用来配置自定义的配置文件的加载路径。比如在SSM项目中会有spring,spirngMVC的xml文件。而为了便于管理和阅读,会将各自相关的bean配置在单独的xml中,所以会用contextConfigLo
**前言:**创建一个web项目,首先从web.xml开始,是web应用的入口。其中的核心配置文件有哪些呢
contextConfigLocation
contextConfigLocation 用来配置自定义的配置文件的加载路径。比如在SSM项目中会有spring,spirngMVC的xml文件。而为了便于管理和阅读,会将各自相关的bean配置在单独的xml中,所以会用contextConfigLocation去统一加载。用法如下:
```java
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/spring-*.xml</param-value>
</cntext-param>
其中classpath和classpath的区别是:
classpath: 只会到你的class路径去查找文件
classpath:不仅包含class路径,还包括jar文件中(class路径)进行查找。
如果项目有多个classpath路径,并同时加载多个classpath路径下的文件,就应该使用classpath*
ContextLoaderListener
ContextLoadListener是一个监听器。它负责监听Web项目的启动过程,ContextLoaderListener中定义了两个方法: contextInitialized和contextDestroyed,contextInitialized执行时,会初始化web应用的根上下文信息。
对于Spring承载的web应用而言,可以在指定在web应用程序启动时载入IOC容器(或者称为WebApplicationContext)。这个功能
是由ContextLoaderListener这个监听器类来完成的。ContextLoaderListener继承自ContextLoader,实际上就是通过ContextLoader
来完成IOC的初始化的。ContextLoaderListener可以看做是Spring的启动器,Spring从这里开始。在web.xml中配置如下
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
DispatcherServlet
1,DispatcherServlet核心控制器的作用
DispatcherServlet是Spring MVC的核心控制器,所有的web请求都要通过DispatcherServlet来处理,这些请求经过转发、匹配、数据处理以
后,交给页面来进行展示。DispatcherServlet的基类是HttpServlet,DispatcherServlet启动时也会初始化上下文信息,这个上下文是对根上下
文的补充。在SpringMVC中,对于不同的web请求,SpringMVC提供了不同的映射策略(HandleMapping),不同的项目可以根据自身情况选择不同的
映射策略。默认情况下,DispatcherServlet使用的是BeanNameUrlHandlerMapping作为自己的映射策略。
2,DispatcherServlet核心控制器的初始化
DispatcherServlet的初始化,是在ContextLoaderListener的初始化之后。DispatcherServlet的初始化的时间与在web.xml中load-on-startup
的定义有关。DispatcherServlet会建立自己的上下文来持有SpringMVC的Bean对象,在建立这个自己持有的IOC容器时,会从ServletContext中得
到根上下文,作为DispatcherServlet持有上下文的双亲上下文。从这里我们可以看出,ServletContext是根上下文,DispatcherServlet是第二层次
的二级上下文。DispatcherServlet上下文是对根上下文的补充和扩展,是为了更好的支持web。好,先看一下DispatcherServlet的继承关系:
* public class DispatcherServlet extends FrameworkServlet
* public abstract class FrameworkServlet extends HttpServletBean
* public abstract class HttpServletBean extends HttpServlet implements EnvironmentCapable, EnvironmentAware
从上面这个继承关系可以看出,DispatcherServlet的本质还是一个HttpServlet,SpringMVC框架就是对servlet的封装。万变不离其宗。其实,
DispatcherServlet也是通过使用Servlet API来处理HTTP请求的。DispatcherServlet实现的原理,和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/springmvc-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
另外每次都会配一个Log4j的监听器。。不知道为什么 但是不配置就会出错 要配置在ContextLoaderListener前面奥!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)