HTTP状态404 – Servlet 不可用
问题 :我的带有web.xml的index.jsp继续进入HTTP 404和500
我正在使用Tomcat6。
这是来自index.jsp:
当我在注册时:
我打了名字和姓,我进入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
。