spring mvc web.xml配置context加载

以Tomcat为例,想在Web容器中使用Spirng MVC,必须进行四项的配置:
修改web.xml,添加servlet定义、编写servletname-servlet.xml( servletname是在web.xm中配置DispactherServlet时使servlet-name的值) 、配置contextConfigLocation初始化参数、配置ContextLoaderListerner。

<!-- servlet定义 -->
<servlet>
<servlet-name>vincent</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>vincent</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>


<!-- 配置contextConfigLocation初始化参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/vincent-service.xml,/WEB-INF/vincent- dao.xml</param-value>
</context-param>

<!-- 配置ContextLoaderListerner -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
[color=red]DispatcherServlet:[/color]前端处理器,接受的HTTP请求和转发请求的类。

[color=red]vincent-servlet.xml:[/color]定义DispatcherServlet中WebAppliactionContext上下文中的bean。

[color=red]contextConfigLocation[/color]:指定Spring IoC容器需要读取的定义了非web层的Bean(DAO/Service)的XML文件路径。使用 contextConfigLocation 加载指定路径的配置文件时,多个配置文件可以用逗号,冒号,空格, \t,\n 中任一个来分隔。
如果没有指定contextConfigLocation 参数,ContextLoaderListener会默认加载/WEB-INF/applicationContext.xml这个配置文件。springmvc将由ContextLoaderListener 载入的application context 叫做 "root application context" ,以区别于servlet的application context。

springmvc可以配置多个servlet,每一个 servlet都拥有各自的application context,相互之间不能相互访问。但是"root application context"却是对所有servlet都是可见的。


[color=red]ContextLoaderListener:[/color]Spring MVC在Web容器中的启动类,负责Spring IoC容器在Web上下文中的初始化。

根据前面的配置,DispatcherServlet已经载入court-servlet.xml。你可以将系统中所有的bean都配置在court-servlet.xml中,但是最后这个文件会非常臃肿,最佳实践是对每一层(web、biz、dal)进行单独配置,至少要区分web层配置和biz层的配置。
最后,该servlet application context将root application context设置为parent,然后加载完成。

Spring MVC启动过程大致分为两个过程:1、ContextLoaderListener初始化,实例化IoC容器,并将此容器实例注册到ServletContext中。2、DispatcherServlet初始化。

[color=indigo]DispatcherServlet初始化配置如下:
servlet application context的加载策略类似于root application context,首先会查找是否配置了servlet的init-param "contextConfigLocation",如果有,就使用 contextConfigLocation 指定的路径加载的配置文件时,多个配置文件可以用逗号,冒号,空格, \t,\n 中任一个来分隔。


为了保证所有的配置文件都可以被载入,我们需要在web.xml文件中配置一个上下文载入器。
如果没有指定"contextConfigLocation"参数,则会在 /WEB-INF/下查找 "servlet-name"+"-servlet.xml" 这样的文件加载。如下配置所示,就是/WEB-INF/springDispatcherServlet-servlet.xml 。
Xml代码
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/servlet-applicationContext.xml,WEB-INF/service-applicationContext.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/mvc/*</url-pattern>
</servlet-mapping>


以后在应用里调用applicationContext或者beanFactory的getBean方法去获取实例的时候,都是先尝试从"root application context"获取,获取不到,再到当前application context里获取。
[/color]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 是一个基于 Spring 框架的 Web 框架,通过配置一个 XML 文件可以完成 Spring MVC配置。下面是一个简单的 spring-mvc.xml 配置文件示例: ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启 Spring MVC 注解 --> <mvc:annotation-driven /> <!-- 扫描控制器类 --> <context:component-scan base-package="com.example.controller" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans> ``` 这个配置文件中包含以下配置: 1. 开启 Spring MVC 注解,例如 @RequestMapping 等; 2. 扫描控制器类; 3. 配置视图解析器,将逻辑视图名称解析为物理视图地址。在这个配置文件中,将逻辑视图名称的前缀设置为 /WEB-INF/views/,后缀设置为 .jsp。 你可以根据自己项目的需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值