【问题标题】:Getting HTTP Status 400 error while running a Servlet class using Tomcat server使用 Tomcat 服务器运行 Servlet 类时出现 HTTP 状态 400 错误
【发布时间】:2015-06-12 01:15:40
【问题描述】:

我对编写 servlet 完全陌生。我创建了一个简单的 HelloWorld 程序,但在运行应用程序时出现以下错误:

HTTP 状态 404 - /HelloWorld/HelloWorld

输入状态报告

消息/HelloWorld/HelloWorld

说明:请求的资源不可用。

下面是我的代码:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
    private static final long serialVersionUID = 1L;           
    
    public HelloWorld() {
        super();  
    }    
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        out.println("Hello World");
    }
}

还有我的 web.xml

<display-name>HelloWorld</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

我使用的是 Tomcat 版本:7.0,我的 IDE 是 Eclipse Luna。为什么会抛出这个错误?

【问题讨论】:

  • 显示您的 web.xml 文件....
  • HelloWorldindex.htmlindex.htm index.jspdefault.htmldefault.htmdefault.jsp
  • 你的网络应用的根目录是什么?
  • @PaulNgom 我的项目结构是这样的:- Java Resources>src>com.serv>HelloWorld.java WebContent>WEB-INF>web.xml
  • 删除你的url中的第一个HelloWorld,看看它是否有影响

标签: java xml servlets


【解决方案1】:

your_war_file_name/HelloWorld... 您可以在 Tomcat 目录下的 webapps 文件夹下找到 war 文件名。在这里,我只是重新创建了相同的。我的战争文件名是 website.war。这个对我有用。网址是 http://localhost:8090/website/developer 。我得到了响应“Hello World”.... :)

package com.test.developer;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet{

    private static final long serialVersionUID = 1L;


    public Test() {
        super();

    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Inside servelt");
        PrintWriter out=response.getWriter();
        out.println("Hello World");
    }
}

我的 web.xml 是

<?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/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>website</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  <servlet-name>developer</servlet-name>
  <servlet-class>com.test.developer.Test</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>developer</servlet-name>
  <url-pattern>/developer</url-pattern>
  </servlet-mapping>
</web-app>

【讨论】:

  • 没什么区别
  • @novel P,根据 PaulNgom 的评论,无论您做什么都是正确的。但是这次你没有得到 404 错误,这意味着你的 servlet 被 conatiner 找到了,你的 url 是正确的,因为你得到了 500 错误,还有一些其他的问题。你能分享完整的堆栈跟踪吗
  • javax.servlet.ServletException: 实例化 servlet 类 com.serv.HelloWorld org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) org.apache.catalina.valves.ErrorReportValve 时出错.invoke(ErrorReportValve.java:102) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote .http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
  • org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) java。 util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java. lang.Thread.run(Unknown Source)
  • 我清理了项目。它工作正常。非常感谢。
猜你喜欢
  • 2020-02-13
  • 2015-01-31
  • 1970-01-01
  • 2017-12-21
  • 2014-01-19
  • 2013-05-29
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多