Java HTTP状态404-Servlet[ServletName]不可用
问题:我的index.jsp和web.xml不断进入HTTP 404和500 我用的是Tomcat6 这来自index.jsp:Java HTTP状态404-Servlet[ServletName]不可用,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,问题:我的index.jsp和web.xml不断进入HTTP 404和500 我用的是Tomcat6 这来自index.jsp: 注册 名字: 姓氏: 当我注册时: 我点击名字和姓氏,进入404,信息: HTTP状态404-Servlet RegistrationServlet不可用 类型状态报告 消息Servlet RegistrationServlet不可用 说明请求的资源(Servlet RegistrationServlet不可用)不可用 ApacheTomcat/6.0.35 你认
注册
名字:
姓氏:
当我注册时:
我点击名字和姓氏,进入404,信息:
HTTP状态404-Servlet RegistrationServlet不可用
类型状态报告
消息Servlet RegistrationServlet不可用
说明请求的资源(Servlet RegistrationServlet不可用)不可用
ApacheTomcat/6.0.35
你认为那是什么原因造成的错误
类RegistrationServlet
位于文件夹src/coreservlet/
我检查了web.xml,但似乎还可以,但这里有(如果有帮助的话):
展示天平
coreservlets.ShowBalance
展示天平
/显示平衡
随机数Servlet
coreservlet.RandomNumberServlet
随机数Servlet
/随机数
注册服务
CoreServlet.RegistrationServlet
注册服务
/登记册
PrimeServlet
coreservlet.PrimeServlet
PrimeServlet
/主要的
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);
}
}
}
下面是项目树:
错误。。。这是显而易见的,但是/WEB-INF/classes/COREServlet/中的RegistrationServlet.class是什么?你编译了吗?(使用Tomcat时,您需要显式编译吗?如果不需要,那将令人惊讶。)可能是注册路径没有考虑上下文路径。解决这个问题的一个好方法是使用jstl核心url标记-
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
...
<c:url value="/register" var="url">
<form action="${url}">
...
这将确保如果您的上下文路径被添加到url中。您的url完全正常。如果URL错误,您将收到如下404消息: 请求的资源
寄存器
不可用
但你却得到了
ServletRegistrationServlet
不可用
这意味着找到了servlet,但无法执行它,因为它的构造和初始化失败并出现异常。在Tomcat的掩护下,以下步骤基本上失败了:
Servlet servlet = new RegistrationServlet();
servlet.init(servletConfig);
servlet.init();
您需要读取此异常的服务器日志,然后相应地修复代码
虽然您的URL完全正常,但它的错误很容易在上下文中发生更改。您更希望指定一个域相对URL:
另请参阅此相关答案:如果在实例化servlet时发生任何错误,我们将得到此类错误,
即使
WEB-INF\lib
文件夹中缺少库。确保所有库都放在表单操作中的WEB-INF\lib
中,尝试将“/register”更改为“/register”(删除点)尝试
您的绝对应用程序URL是什么?@ftom2:我得到了以下信息:HTTP状态404-/register类型状态报告消息/注册描述请求的资源(/register)没有。Apache Tomcat/6.0.35
@ITCuties:尝试了该操作,得到了以下结果:HTTP状态404-/register-type状态报告消息/register-description请求的资源(/register)不可用。Apache Tomcat/6.0.35
我应该下载哪个jstl
版本?在这之后,只需在index.jsp
?jstl 1.2的开头(第一行)添加一行
,您可以从这里下载-,然后在jsp文件的顶部添加该声明您建议的是一个完全过时的jstl URI。请阅读我们的JSTL wiki页面以获得正确的指南:除此之外,这并没有以任何方式回答具体问题。哦,谢谢,我没有意识到JSTL链接已经过时。是的,这个建议并没有解决根本的问题,我们推测这可能是找不到servlet的原因之一+我是诺布,所以发发慈悲吧,但我有一个愚蠢的问题。Tomcat可以在eclipse中使用WEB-INF中的jsp文件吗?@Pshemo:可以。这甚至是MVC中推荐的做法。只有servlet可以通过RequestDispatcher
转发给它们。这样,用户被迫使用前端控制器servlet来访问JSP,并且永远不能单独访问那些需要预处理/后处理servlet的JSP。另请参见我们的servlets wiki页面,了解如何使用servlets:非常感谢。很抱歉,我这么晚才感谢你,但我需要测试一下你告诉我的内容,以确保我理解正确:)@BalusC:非常感谢你对我上一篇文章的帮助。第二,我尝试使用这个
,但是我仍然得到404
页面,就像HTTP状态404-Servlet RegistrationServlet不可用类型状态报告消息Servlet RegistrationServlet不可用描述请求的资源(Servlet RegistrationServlet不可用)不可用。
。我在哪里可以找到日志?@BalusC:好的,然后我得到了这个HTTP状态500-类型异常报告消息描述服务器遇到了一个内部错误(),阻止它完成这个请求。异常javax.servlet.ServletException:包装器找不到servlet类CoreServlet.RegistrationServlet或它所依赖的类,这意味着它找不到该类。我怎样才能解决这个问题?这太烦人了:)