《web.xml配置归纳》
在Java Web开发中,`web.xml`是应用的部署描述符,它是应用程序配置的核心,用于定义各种组件、过滤器、监听器等。以下是一些关键配置点的归纳:
1. **Spring上下文配置**
当我们需要改变`applicationContext.xml`的路径时,可以在`web.xml`中使用`<context-param>`元素来指定。例如:
```xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/path/live/a/config/applicationContext.xml</param-value>
</context-param>
```
为了使Spring在Web应用启动时自动加载该配置,我们需要添加`ContextLoaderListener`监听器:
```xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
```
2. **过滤器配置**
若要添加过滤器,例如`ContextFilter`,可以这样设置:
```xml
<filter>
<filter-name>context-filter</filter-name>
<filter-class>path.live.a.context.ContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>context-filter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
```
这将确保所有`.do`结尾的URL都会经过`ContextFilter`。
3. **Struts2配置**
Struts2的配置通常涉及`FilterDispatcher`:
```xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
```
`<dispatcher>`元素定义了哪些类型的请求会被过滤器处理,如`REQUEST`和`INCLUDE`。
4. **Log4j配置**
要配置Log4j,需要设置`log4jConfigLocation`参数,并添加`Log4jConfigListener`监听器:
```xml
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
```
这使得Log4j能根据`/WEB-INF/log4j.properties`中的配置初始化日志系统。
5. **自定义监听器**
自定义监听器允许开发者扩展功能,例如创建一个名为`ApplicationListener`的监听器:
```xml
<listener>
<listener-class>path.live.a.context.ApplicationListener</listener-class>
</listener>
```
`ApplicationListener`的实例可用于保存`ServletContext`的引用,以便在应用的生命周期中访问或操作。
6. **DWR (Direct Web Remoting) 配置**
DWR是一个用于实现Ajax的框架,配置如下:
```xml
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- DWR2.0必须的参数 -->
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
```
这样的配置使得DWR能够处理所有以`/dwr/`开头的请求,并且在`debug`为`true`时,可以查看DWR自动生成的测试页面。
总结来说,`web.xml`是Java Web应用的灵魂,通过精确配置,我们可以控制Spring的上下文加载、过滤器的执行、MVC框架的行为、日志系统的初始化以及Ajax框架的功能,实现高效且定制化的Web应用。