You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web应用点击超链接报错排查及无web.xml配置方案咨询

解决Web应用Next Page链接404错误的方案

首先,咱们拆解下你遇到的404问题,从配置和代码里能看到几个明显的问题点:

1. 拼写错误导致映射不匹配

你在web.xml里把Servlet拼写成了NextPageServlent(多了个n,正确拼写是Servlet),这个低级错误会让容器找不到对应的Servlet映射,直接触发404。

2. JSP文件路径配置错误

你的<jsp-file>/NextPageServlent/nextPage.jsp</jsp-file>假设nextPage.jsp放在了NextPageServlent子目录下,但如果你的JSP实际是在Web应用根目录(比如src/main/webapp或WebContent),这个路径就完全错了,应该改成/nextPage.jsp。

3. URL映射与请求路径不匹配

你实际访问的是/Welcome/nextPage,但web.xml里的映射是/NextPageServlent/*,两者完全不对应。同时index.jsp里的链接是<a href="nextPage">,这个相对路径基于当前页面URL(比如http://localhost:8080/Welcome/),所以请求的是/Welcome/nextPage,需要让这个路径和你的Servlet映射对上。


修改web.xml的正确配置方案

把上述问题修正后,修改后的web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
         version="3.1">
    <display-name>MyApp</display-name>
    <welcome-file-list>
        <welcome-file>WelcomeServlet</welcome-file>
    </welcome-file-list>
    <!-- 修正拼写错误,调整JSP路径 -->
    <servlet>
        <servlet-name>NextPageServlet</servlet-name>
        <jsp-file>/nextPage.jsp</jsp-file>
    </servlet>
    <!-- 映射到你实际请求的/nextPage路径 -->
    <servlet-mapping>
        <servlet-name>NextPageServlet</servlet-name>
        <url-pattern>/nextPage</url-pattern>
    </servlet-mapping>
</web-app>

同时确保nextPage.jsp确实在Web应用的根目录下,这样访问/Welcome/nextPage就能正确找到对应的页面了。


不用web.xml的解决方案(Servlet 3.0+支持)

当然可以不用web.xml!Servlet 3.0及以上版本支持注解式配置和直接访问JSP文件,给你两种可选方案:

方案1:直接访问JSP文件

如果nextPage.jsp只是静态或简单的JSP页面,完全不需要配置Servlet,直接修改index.jsp里的链接:

<a href="nextPage.jsp">go to the next page </a>

点击后会直接请求/Welcome/nextPage.jsp,只要JSP在根目录,就能正常访问,全程不需要web.xml配置。

方案2:注解式Servlet

如果nextPage需要Servlet逻辑处理,可以创建一个Servlet类,用@WebServlet注解指定映射路径,示例代码:

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/nextPage")
public class NextPageServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 这里写你的业务逻辑
        request.getRequestDispatcher("/nextPage.jsp").forward(request, response);
    }
}

这种方式下,你可以直接删除web.xml(或者保留但移除Servlet相关配置),容器会自动识别注解并完成映射。

内容的提问来源于stack exchange,提问作者student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:02:08