HTTP状态404 - Servlet [ServletName]不可用 [英] HTTP Status 404 - Servlet [ServletName] is not available

查看:98
本文介绍了HTTP状态404 - Servlet [ServletName]不可用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我正在使用Tomcat6。<这是来自index.jsp:

 < legend>注册< / legend> 
< form action =。/ register> <% - 来自web.xml的地址 - %>
名字:< input type =textname =firstName>< br>
姓氏:< input type =textname =lastName>< br>
< input type =submitvalue =Register>
< / form>

当我在注册时:





我点击了姓名和姓氏,我进入404,消息:


HTTP状态404 - Servlet RegistrationServlet不可用



类型状态报告



消息 Servlet RegistrationServlet不可用



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



Apache Tomcat / 6.0.35


您认为该错误的原因是什么?



RegistrationServlet 位于文件 RegistrationServlet.java 在文件夹 src / coreservlets /



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

 <?xml version =1.0编码= UTF-8 >?; 
< web-app xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexmlns =http://java.sun.com/xml/ns/j2eexmlns :web =http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdxsi:schemaLocation =http://java.sun.com/xml/ns/j2ee http:// java.sun.com/xml/ns/j2ee/web-app_2_4.xsdversion =2.4>
< servlet>
< servlet-name> ShowBalance< / servlet-name>
< servlet-class> coreservlets.ShowBalance< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> ShowBalance< / servlet-name>
< url-pattern> / show-balance< / url-pattern>
< / servlet-mapping>
< servlet>
< servlet-name> RandomNumberServlet< / servlet-name>
< servlet-class> coreservlets.RandomNumberServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> RandomNumberServlet< / servlet-name>
< url-pattern> / random-number< / url-pattern>
< / servlet-mapping>
< servlet>
< servlet-name> RegistrationServlet< / servlet-name>
< servlet-class> coreservlets.RegistrationServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> RegistrationServlet< / servlet-name>
< url-pattern> / register< / url-pattern>
< / servlet-mapping>
< servlet>
< servlet-name> PrimeServlet< / servlet-name>
< servlet-class> coreservlets.PrimeServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> PrimeServlet< / servlet-name>
< url-pattern> / prime< / url-pattern>
< / servlet-mapping>
< welcome-file-list>
< welcome-file> index.jsp< / welcome-file>
< welcome-file> index.html< / welcome-file>
< / welcome-file-list>
< / web-app>

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



编辑:



根据要求,这里是 RegistrationServlet

  package coreservlets; 

import java.io. *;
import javax.servlet。*;
import javax.servlet.http。*;

公共类RegistrationServlet扩展HttpServlet {

private static final long serialVersionUID = 1L;

@覆盖
公共无效的doGet(HttpServletRequest的请求,响应HttpServletResponse的)
抛出的ServletException,IOException异常{
HttpSession的会议= 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 =/ WWE-INF / mvc-sharing / ShowName.jsp;
RequestDispatcher dispatcher = request
.getRequestDispatcher(address);
dispatcher.forward(请求,响应);
}
}
}

此处还有项目树:



解决方案

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


请求的资源注册不可用


但你得到了


Servlet RegistrationServlet 不可用


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

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

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






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

 < form action = $ {pageContext.request.contextPath} /注册 > 

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


The problem : My index.jsp with web.xml keeps going into HTTP 404 and 500

I'm using Tomcat6 .

This is from index.jsp :

  <legend>Registration</legend>
  <form action="./register"> <%-- Address from web.xml  --%>
    First name: <input type="text" name="firstName"><br>
    Last name: <input type="text" name="lastName"><br>
    <input type="submit" value="Register">
  </form>

When I'm in Registration :

and I hit the name and last-name , I go into 404 , the message :

HTTP Status 404 - Servlet RegistrationServlet is not available

type Status report

message Servlet RegistrationServlet is not available

description The requested resource (Servlet RegistrationServlet is not available) is not available.

Apache Tomcat/6.0.35

What do you think it the cause for that error ?

The class RegistrationServlet is under the file RegistrationServlet.java in the folder src/coreservlets/

I checked web.xml but it seems to be okay , but here it is (if it would be helpful):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <servlet>
    <servlet-name>ShowBalance</servlet-name>
    <servlet-class>coreservlets.ShowBalance</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ShowBalance</servlet-name>
    <url-pattern>/show-balance</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>RandomNumberServlet</servlet-name>
    <servlet-class>coreservlets.RandomNumberServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RandomNumberServlet</servlet-name>
    <url-pattern>/random-number</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>RegistrationServlet</servlet-name>
    <servlet-class>coreservlets.RegistrationServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>RegistrationServlet</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>PrimeServlet</servlet-name>
    <servlet-class>coreservlets.PrimeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PrimeServlet</servlet-name>
    <url-pattern>/prime</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

I've been trying to fix this little culprit for the last two days but nothing , any help would be much appreciated .

EDIT:

As requested , here is 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);
        }
    }
}

Also here is the project tree :

解决方案

Your URL is completely fine. If the URL was wrong, you would have gotten a 404 message like follows:

Requested resource register is not available

But you instead got

Servlet RegistrationServlet is not available

This means that the servlet was found, but that it couldn't be executed because its construction and initialization failed with an exception. Under Tomcat's covers, basically one of the following steps has failed:

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

You need to read the server logs for this exception and then fix the code accordingly.


Whilst your URL is completely fine, it's error prone to changes in the context. You'd rather like to specify a domain-relative URL instead:

<form action="${pageContext.request.contextPath}/register">

See also this related answer: Browser can't access/find relative resources like CSS, images and links when calling a Servlet which forwards to a JSP

这篇关于HTTP状态404 - Servlet [ServletName]不可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆