WEB-INF/web.xml 示例

本文详细介绍了Struts框架在Web应用程序中的配置过程,包括ActionServlet的初始化参数设置、URL映射、会话超时配置及错误页面指定等内容。
<?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" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <session-config>
        <session-timeout>30</session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>form/login.jsp</welcome-file>
  </welcome-file-list>
  <error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
  <error-page>
<!-- 安全设置

<security-role>
        <role-name>manager</role-name>
    </security-role>
    <servlet>
        <servlet-name>catalog</servlet-name>
        <servlet-class>com.mycorp.CatalogServlet</servlet-class>
        <init-param>
            <param-name>catalog</param-name>
            <param-value>Spring</param-value>
        </init-param>
        <security-role-ref>
             <role-name>MGR</role-name>
            
             <role-link>manager</role-link>
        </security-role-ref>
    </servlet>
    <servlet-mapping>
         <servlet-name>catalog</servlet-name>
         <url-pattern>/catalog/*</url-pattern>
    </servlet-mapping>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>SalesInfo</web-resource-name>
            <url-pattern>/salesinfo/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>manager</role-name>
        </auth-constraint>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

-->
</web-app>
<think>好的,我现在需要帮助用户解决在WEB-INF/web.xml中配置Servlet映射的问题,以解决servlet爆红的问题。用户之前提到了在IDEA中servlet代码爆红,现在想通过传统的web.xml配置而不是注解来设置映射。首先,我需要回忆一下Servlet的配置方法,尤其是XML配置的步骤。 首先,用户的问题可能出在依赖或配置错误,但根据用户当前的请求,他们希望使用web.xml而不是注解。所以,我需要确保他们正确地在web.xml中添加servletservlet-mapping元素。记得每个Servlet需要两个部分:<servlet>定义类和名称,<servlet-mapping>关联URL模式。 然后,我需要参考用户提供的引用内容,特别是引用[2]提到contextConfigLocation的命名必须正确,这可能影响到其他配置,但当前问题主要是Servlet映射。引用[3]详细说明了web.xml的结构,这有助于正确配置。 接下来,用户可能遇到的常见错误包括拼写错误、路径不正确或未正确部署到WEB-INF/classes目录。需要提醒用户检查类路径是否正确,编译后的class文件是否在正确的位置。例如,如果Servlet类在包com.example中,class文件应该在WEB-INF/classes/com/example/下。 此外,用户之前的问题可能涉及Tomcat版本导致的命名空间问题,比如Tomcat 10使用jakarta而不是javax。但根据用户提供的引用[1]中的代码,他们使用的是javax.servlet,所以可能需要确认他们使用的Tomcat版本是否兼容。如果用户使用的是Tomcat 10及以上,可能需要改用jakarta,否则会出现类找不到的错误,导致爆红。 还需要考虑web.xml的版本和头部声明是否正确,不同的Servlet版本对应的web.xml结构和命名空间不同。例如,Servlet 3.0的web.xml头部声明与更早版本不同,正确的声明可以避免解析错误。 最后,用户可能需要清理IDE缓存,重新构建项目,并确保部署正确。如果配置正确但IDE仍然报错,可能需要检查项目结构,确认依赖是否正确,或者重启IDE。</think>--- #### **一、配置`web.xml`实现Servlet映射的完整步骤** --- ##### **步骤1:确认项目结构符合标准** 1. **强制目录规范** - 确保编译后的Servlet类文件位于`WEB-INF/classes/`目录下 -Servlet使用包名(如`com.example`),则class文件路径应为: `WEB-INF/classes/com/example/YourServlet.class`[^3] --- ##### **步骤2:编写`web.xml`核心配置** ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 步骤2.1:声明Servlet --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.syy.servlet.HelloServlet</servlet-class> <!-- 必须包含完整包路径 --> </servlet> <!-- 步骤2.2:配置映射路径 --> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> <!-- 支持多个url-pattern --> </servlet-mapping> </web-app> ``` **关键验证点**: - 检查`servlet-class`是否与Java文件中的**完整类名**一致(含包路径)[^2] - 确认XML头部声明的Schema版本与项目使用的Servlet规范匹配(例如Tomcat 9对应Servlet 4.0) --- ##### **步骤3:解决常见配置错误** 1. **ClassNotFoundException** - **症状**:控制台报`java.lang.ClassNotFoundException: com.syy.servlet.HelloServlet` - **解决方案**: - 执行`mvn clean compile`重新编译 - 检查`target/classes`目录是否生成class文件[^3] 2. **404 Not Found** - **诊断流程**: - 访问`http://localhost:8080/项目名/hello`时是否触发Servlet - 检查`url-pattern`是否被其他配置覆盖(如注解优先级高于XML)[^1] --- #### **二、新旧配置方式对比** | 特性 | 注解方式 (`@WebServlet`) | XML配置 (`web.xml`) | |--------------------|-------------------------|---------------------------| | **部署灵活性** | 需重新编译代码 | 修改XML后直接生效 | | **路径集中管理** | 分散在各个类中 | 统一在单个文件管理 | | **Servlet 3.0+支持**| 是 | 是(需Schema版本匹配) | | **优先级** | 低于XML配置[^1] | 更高优先级 | --- #### **三、深度避坑指南** 1. **XML语法校验** - 使用`web-app_4_0.xsd`时,禁止出现Servlet 2.3的`<!DOCTYPE>`声明 - 通过在线工具验证XML合法性: https://www.freeformatter.com/xml-validator-xsd.html 2. **热加载配置失效** - Tomcat默认不监视`web.xml`修改,需手动执行以下操作: ```bash # Linux/Mac touch WEB-INF/web.xml # Windows echo. > WEB-INF/web.xml ``` --- #### **四、配置验证流程** 1. **部署验证** - 访问`http://localhost:8080/项目名/hello`应输出`hello ....`(与代码逻辑一致) 2. **日志检查** - 查看Tomcat启动日志是否包含: ```log INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory 部署web应用程序目录 [/path/to/your/webapp] ``` --- #### **五、扩展配置示例** **多URL映射**: ```xml <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> <url-pattern>/hi</url-pattern> <url-pattern>/greet/*</url-pattern> </servlet-mapping> ``` **初始化参数**: ```xml <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.syy.servlet.HelloServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值