HTTP状态404 – Servlet 不可用

问题 :我的带有web.xml的index.jsp继续进入HTTP 404和500

我正在使用Tomcat6。

这是来自index.jsp:

Registration 
First name:
Last name:

当我在注册时:

在此处输入图像描述

我打了名字和姓,我进入404,消息:

HTTP状态404 – Servlet RegistrationServlet不可用

类型状态报告

消息 Servlet RegistrationServlet不可用

description请求的资源(Servlet RegistrationServlet不可用)不可用。

Apache Tomcat / 6.0.35

你认为这个错误的原因是什么?

RegistrationServlet类位于文件src/coreservlets/下的src/coreservlets/文件夹中

我检查了web.xml,但它似乎没问题,但这里是(如果它会有帮助):

    ShowBalance coreservlets.ShowBalance   ShowBalance /show-balance   RandomNumberServlet coreservlets.RandomNumberServlet   RandomNumberServlet /random-number   RegistrationServlet coreservlets.RegistrationServlet   RegistrationServlet /register   PrimeServlet coreservlets.PrimeServlet   PrimeServlet /prime   index.jsp index.html   

过去两天我一直试图解决这个小罪魁祸首,但没有,任何帮助都会非常感激。

编辑:

根据要求,这里是RegistrationServlet

 package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class RegistrationServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); synchronized (session) { NameBean nameBean = (NameBean) session.getAttribute("name"); if (nameBean == null) { nameBean = new NameBean(); session.setAttribute("name", nameBean); } nameBean.setFirstName(request.getParameter("firstName")); nameBean.setLastName(request.getParameter("lastName")); String address = "/WEB-INF/mvc-sharing/ShowName.jsp"; RequestDispatcher dispatcher = request .getRequestDispatcher(address); dispatcher.forward(request, response); } } } 

这里还有项目树:

在此处输入图像描述

您的url完全没问题。 如果URL错误,您将收到如下404消息:

请求的资源register不可用

但你反而得到了

Servlet RegistrationServlet不可用

这意味着找到了servlet,但它无法执行,因为它的构造和初始化因exception而失败。 在Tomcat的封面下, 基本上以下步骤之一失败了:

 Servlet servlet = new RegistrationServlet(); servlet.init(servletConfig); servlet.init(); 

您需要读取此exception的服务器日志,然后相应地修复代码。


虽然您的url完全正常,但在上下文中更改容易出错。 您更愿意指定域相对URL:

 

另请参阅此相关答案: 在调用转发到JSP的Servlet时,浏览器无法访问/查找CSS,图像和链接等相关资源

错误……这很明显,但是/ WEB-INF / classes / coreservlets /中的RegistrationServlet.class是什么? 你编译了吗? (使用Tomcat,您是否需要明确编译?如果您没有,那就太令人惊讶了。)

可能是注册路径不考虑上下文路径。 修复此问题的一个好方法是使用jstl核心url标记 –

 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> ...  

这将确保将您的上下文路径添加到URL。

如果在实例化servlet时发生任何错误,即使WEB-INF\lib文件夹中缺少库,也会出现此类错误。 确保所有库都放在WEB-INF\lib