在web.xml中配置,使用配置类替代springmvc.xml和applicationContext.xml

本文介绍如何在SpringMVC中使用基于Java的配置替代XML配置。通过在web.xml中设置contextClass参数为AnnotationConfigWebApplicationContext,并指定配置类,可以实现应用及DispatcherServlet的Java配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在web.xml配置,让spring mvc在启动的时候,从带有@Configuration注解的类上加载配置,要在Spring MVC中使用基于java的配置,我们需要告诉DispatchServletContextLoaderListener使用AnnotationConfigWebApplicationContext,这是WebApplicationContext的实现类,他会加载java配置类,而不是xml。要实现这种配置,我们可以设置contextClass上下文参数以及DispatcherServlet的初始化参数。如下所示

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
<!-- 让applicationContext.xml使用java配置 -->
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<!-- 指定根配置类,相当于applicationContext.xml中的配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>根配置类的全类名</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 让dispatcherServlet使用java配置 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 告诉springmvc.xml使用java配置 -->
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<!-- 指定dispatcherServlet配置类 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
实现了WebMvcConfigurerAdapter的配置类,相当于springmvc.xml
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

### 如何在 `web.xml` 中配置 Spring MVC #### 配置上下文参数 (`context-param`) 为了使应用程序能够访问到全局的Spring配置文件,在`web.xml`中定义了名为`contextConfigLocation`的上下文参数。此参数指定了Spring应用上下文的位置。 ```xml <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> ``` 该部分告知容器在哪里可以找到核心的应用程序上下文配置文件[^1]。 #### 注册监听器 (listener) 接着通过注册一个监听器来加载上述指定位置中的Spring上下文: ```xml <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 这一步骤确保当Web应用启动时会自动创建并初始化Spring IoC容器实例。 #### 设置过滤器 (filter) 如果项目中有需要处理编码或其他预请求事项的情况,则可以通过设置特定的过滤器实现功能扩展,比如字符集编码过滤器: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <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> ``` 这段代码片段用于解决POST提交数据乱码问题,并强制所有的请求都采用UTF-8编码方式。 #### 定义Servlet映射(servlet) 最后也是最重要的环节就是声明Dispatcher Servlet及其对应的URL模式匹配规则: ```xml <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> ``` 这里设置了前端控制器——即负责接收HTTP请求并将它们分发给适当处理器的方法;同时设定了其拦截路径为`.do`结尾的所有请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值