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

WebContent下Pages文件夹内页面无法访问包中CreateNewCampaign Servlet的HTTP 404问题求助

排查CreateNewCampaign Servlet 404错误的实用步骤

嘿,我遇到过好多次这种Servlet配置后仍报404的情况,大概率是路径匹配或者部署细节出了问题,咱们一步步来排查:

1. 先确认web.xml的配置是否规范

你说已经完成了映射,但还是要仔细核对几个关键点,先给你一个标准的配置示例对照:

<servlet>
    <servlet-name>CreateNewCampaign</servlet-name>
    <!-- 这里必须写完整的包名+类名,比如com.yourteam.servlets.CreateNewCampaign,不能只写类名 -->
    <servlet-class>your.package.path.CreateNewCampaign</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CreateNewCampaign</servlet-name>
    <!-- 注意路径开头的斜杠/,这是根路径映射的关键 -->
    <url-pattern>/CreateNewCampaign</url-pattern>
</servlet-mapping>

要检查的点:

  • <servlet-class>有没有漏写包路径?如果只写CreateNewCampaign,容器根本找不到你的类
  • <url-pattern>开头是不是加了/?没加的话,容器会把它当成相对路径匹配,很容易出错

2. 页面请求路径是重灾区!

你的页面在WebContent/Pages/目录下,直接写相对路径肯定会错!举个例子:
如果你的Servlet映射是/CreateNewCampaign,那页面里的请求必须用绝对路径,比如JSP表单里这么写:

<form action="${pageContext.request.contextPath}/CreateNewCampaign" method="post">
    <!-- 表单内容 -->
</form>

这里${pageContext.request.contextPath}会自动获取你的项目上下文路径(比如/YourProjectName),这样不管页面在哪个目录下,请求都会指向正确的Servlet路径。

要是你直接写action="CreateNewCampaign",实际请求的路径会变成/YourProjectName/Pages/CreateNewCampaign,这和Servlet的映射路径完全不匹配,自然报404。tables.jsp的问题应该也是同样的原因。

3. 检查Servlet类是否真的部署到位了

别光看源码,去你的项目部署目录里看看WEB-INF/classes下有没有对应的包和.class文件。比如你的Servlet在com.yourpackage包下,那必须存在WEB-INF/classes/com/yourpackage/CreateNewCampaign.class,否则容器找不到类,也会返回404。

4. 别忘了上下文路径

访问的时候要带上项目的上下文路径,比如你的项目部署后上下文路径是/CampaignTool,那完整的Servlet访问URL应该是http://localhost:8080/CampaignTool/CreateNewCampaign,直接访问http://localhost:8080/CreateNewCampaign肯定找不到。

如果方便的话,把你的web.xml完整内容贴出来,我能帮你更精准地定位问题,但先按上面的步骤排查,应该能找到症结所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:49:08