web project 中利用 web.xml 中的 默认welcome-file-list 做跳转

本文介绍了一种在项目启动时通过web.xml中的welcome-file-list设置默认首页的方法,并提供了具体的配置示例及对应的servlet处理方式。

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

使用场景:

在现实项目中,偶尔需要在 跳转 指定的 项目首页之前做一些处理,但是又不想 单独多加一个 跳转页面来完成此次操作;如此,该如何处理呢?

这里,可以 利用 web.xml 中的 welcome-file-list 设置默认 来 处理。具体操作如下面的例子所示:

注意: welcome-file 节点 需要 与 servlet-mapping 中的 url-pattern 节点 内容保持一致.

1、web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>web_test</display-name>
  
  <welcome-file-list>
    <welcome-file>emp_tz.hts</welcome-file>
  </welcome-file-list>
  
  <servlet>
     <servlet-name>FrameControlServlet</servlet-name>
     <servlet-class>com.myweb.test.MyDefaultManagerServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>FrameControlServlet</servlet-name>
     <url-pattern>/emp_tz.hts</url-pattern>
  </servlet-mapping>
</web-app>

2、对应 servlet 处理

package com.myweb.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyDefaultManagerServlet extends HttpServlet{

	private static final long serialVersionUID = 1L;
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("this is doPost...");
		response.getWriter().write("very ok");
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {		
		System.out.println("this is doGet...");
		response.getWriter().write("ok");
	}
}

 

转载于:https://my.oschina.net/u/1387400/blog/1577947

### 解决 `web.xml` 中 `web-app` 标签无法找到的问题 在 Java EE 应用程序开发中,如果遇到 `web.xml` 文件中的 `<web-app>` 标签未被识别的情况,通常是因为以下几个原因: #### 1. **XML 命名空间声明不正确** 如果 `web.xml` 的命名空间或模式版本定义错误,则可能导致 IDE 或容器无法解析 `<web-app>` 标签。确保 `web.xml` 文件顶部的 XML 声明符合所使用的 Servlet 版本标准。 正确的示例(Servlet 3.1 规范)如下: ```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_3_1.xsd" version="3.1"> <!-- 配置内容 --> </web-app> ``` 这里需要注意的是,不同的 Servlet 容器可能支持不同版本的标准[^4]。因此,在配置时需确认目标运行环境的支持情况。 #### 2. **IDE 缓存问题** 开发环境中可能存在缓存问题,导致即使修改了 `web.xml` 文件也无法正常加载。可以尝试清理项目并重新构建以解决问题。 对于 Eclipse 用户,可以通过以下操作清除缓存: - 右键单击项目 -> Maven -> Update Project... - 清理并重建项目Project -> Clean... #### 3. **依赖冲突** 如果项目的类路径中有多个版本的 Servlet API JAR 文件,可能会引发冲突,从而影响对 `web.xml` 的解析。建议检查 `pom.xml` 或其他构建工具配置文件中的依赖项是否存在重复引入。 使用 Maven 构建的情况下,可通过命令查看实际依赖树: ```bash mvn dependency:tree ``` 确保仅保留与当前 Servlet 规范匹配的一个版本。 #### 4. **部署描述符位置不对** `web.xml` 文件应位于 `WEB-INF` 目录下。如果该文件放置的位置不符合规范,也可能导致其内容不可见或无法解析。验证目录结构是否遵循以下形式: ``` /src/main/webapp/WEB-INF/web.xml ``` --- ### 总结解决方案 通过上述分析可知,`<web-app>` 标签找不到的主要原因是 XML 命名空间声明有误、IDE 缓存干扰、依赖冲突或者文件位置不当所致。逐一排查这些问题即可有效解决此现象。 ```java // 示例代码片段展示如何读取 web.xml 并获取特定参数 import javax.servlet.ServletContext; import javax.servlet.ServletException; public class WebXmlReader { public static void readWebAppTag(ServletContext context) throws ServletException { String paramValue = context.getInitParameter("some-param"); if (paramValue == null) { throw new ServletException("<web-app> tag or its parameters might be misconfigured."); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值