1. web.xml 的基本结构
web.xml 是一个基于 XML 的配置文件,描述了 Web 应用的基本配置、组件映射和初始化参数等。下面是一个典型的 web.xml 文件的基本结构:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="3.0">
<!-- 描述性信息 -->
<display-name>My Web Application</display-name>
<description>My first web application</description>
<!-- Servlet 配置 -->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<!-- Servlet 映射 -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
<!-- 过滤器配置 -->
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.example.MyFilter</filter-class>
</filter>
<!-- 过滤器映射 -->
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 监听器配置 -->
<listener>
<listener-class>com.example.MyListener</listener-class>
</listener>
<!-- 欢迎文件列表 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 错误页面配置 -->
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
<!-- 上下文参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context.xml</param-value>
</context-param>
<!-- Session 配置 -->
<session-config>
<session-timeout>30</session-timeout> <!-- 分钟 -->
</session-config>
<!-- 安全约束 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/protected/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>
2. web.xml 的各个配置详解
2.1 Servlet 配置
Servlet 是 Java Web 应用的核心组件,它们处理客户端的请求并生成响应。web.xml 文件用于配置和映射 Servlet。
示例:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
servlet-name:Servlet 的名称,用于唯一标识一个 Servlet 实例。servlet-class:Servlet 的实现类,指定该名称对应的具体类。url-pattern:指定该 Servlet 对应的 URL 模式,匹配该模式的请求将由这个 Servlet 处理。
2.2 过滤器配置
过滤器(Filter)用于在请求到达 Servlet 之前或响应返回客户端之前,进行预处理或后处理。常用于权限检查、日志记录等功能。
示例:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.example.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name:过滤器的名称,用于唯一标识一个过滤器实例。filter-class:过滤器的实现类,指定该名称对应的具体类。url-pattern:指定该过滤器应用的 URL 模式。
2.3 监听器配置
监听器(Listener)用于监听 Web 应用的生命周期事件,如应用启动、销毁、Session 创建等。它们通常用于初始化资源或清理资源。
示例:
<listener>
<listener-class>com.example.MyListener</listener-class>
</listener>
listener-class:监听器的实现类,该类必须实现特定的监听器接口,如ServletContextListener、HttpSessionListener等。
2.4 欢迎文件列表
欢迎文件列表用于指定当用户访问根目录时,Web 服务器应返回的默认文件。
示例:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
welcome-file:指定的欢迎文件名称,按顺序查找并返回第一个找到的文件。
2.5 错误页面配置
错误页面配置用于指定在发生特定错误(如 404 未找到)时,返回的错误页面。
示例:
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
error-code:HTTP 状态码,用于指定发生该错误时的处理页面。location:错误页面的路径。
2.6 上下文参数
上下文参数用于配置 Web 应用级别的参数,这些参数可以在整个应用中访问。
示例:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context.xml</param-value>
</context-param>
param-name:参数的名称。param-value:参数的值。
2.7 Session 配置
Session 配置用于指定 Session 的相关设置,如超时时间等。
示例:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
session-timeout:指定 Session 的超时时间,单位为分钟。
2.8 安全约束
安全约束用于保护 Web 应用的部分资源,指定哪些角色可以访问这些资源。
示例:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/protected/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
web-resource-collection:定义需要保护的资源集合。auth-constraint:定义允许访问这些资源的角色。
3. 使用注解替代 web.xml 配置
自 Servlet 3.0 以来,许多 web.xml 的配置可以使用注解来替代。这种方式更加简洁和灵活。
3.1 Servlet 注解
可以使用 @WebServlet 注解来定义 Servlet,而不再需要在 web.xml 中配置。
示例:
@WebServlet(name = "MyServlet", urlPatterns = {"/myservlet"})
public class MyServlet extends HttpServlet {
// Servlet 逻辑
}
3.2 过滤器注解
可以使用 @WebFilter 注解来定义过滤器。
示例:
@WebFilter(filterName = "MyFilter", urlPatterns = {"/*"})
public class MyFilter implements Filter {
// 过滤器逻辑
}
3.3 监听器注解
可以使用 @WebListener 注解来定义监听器。
示例:
@WebListener
public class MyListener implements ServletContextListener {
// 监听器逻辑
}
4. 总结
-
Servlet配置:可以通过web.xml文件配置Servlet的名称、类名、URL映射等信息。使用元素来定义Servlet,可以使用元素定义Servlet的名称,使用元素定义Servlet的类名。
-
Servlet映射:可以通过web.xml文件配置Servlet的URL映射规则,使得特定的URL请求能够被特定的Servlet处理。使用元素来定义Servlet的URL映射,可以使用元素指定Servlet的名称,使用元素指定URL的匹配规则。
-
过滤器配置:可以通过web.xml文件配置过滤器,用于在请求到达Servlet之前或响应返回给客户端之前对请求或响应进行处理。使用元素来定义过滤器,可以使用元素定义过滤器的名称,使用元素定义过滤器的类名。
-
过滤器映射:可以通过web.xml文件配置过滤器的URL映射规则,使得特定URL请求能够被特定过滤器处理。使用元素来定义过滤器的URL映射,可以使用元素指定过滤器的名称,使用元素指定URL的匹配规则。
-
Listener配置:可以通过web.xml文件配置监听器,用于监听Web应用程序的事件,例如Web应用程序的启动或销毁等。使用元素来定义监听器,可以使用元素定义监听器的类名。
-
错误页面配置:可以通过web.xml文件配置错误页面,当发生特定错误时,将显示自定义的错误页面。使用元素来定义错误页面,可以使用元素指定错误代码,使用元素指定异常类型,使用元素指定错误页面的路径。
-
上下文参数配置:可以通过web.xml文件配置上下文参数,用于在整个Web应用程序中共享和访问配置信息。使用元素来定义上下文参数,可以使用元素指定参数名称,使用元素指定参数值。
682



被折叠的 条评论
为什么被折叠?



