【问题标题】:Error 505 on servlet request [duplicate]servlet 请求上的错误 505 [重复]
【发布时间】:2026-02-24 03:45:02
【问题描述】:

我正在尝试制作一个简单的表单,但收到错误 500

index.php

<html>
<body>
    <form action="login">
        <input type="text" name="nombre"></input>
        <input type="submit" value="Enviar"></input>
    </form>
</body>
</html>

LoginServlet.java

package com.prueba1;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet
 */
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public LoginServlet() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <display-name>LoginServlet</display-name>
    <description></description>
    <servlet-class>com.prueba1.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
</web-app>

urlpatter 设置为/login,表单操作是登录,但是当我尝试提交时,出现 505 错误,代码没有错误,我不知道是什么问题。我已经关注很多教程,总是得到同样的错误。

这是错误,找不到servlet类

javax.servlet.ServletException: Error instanciando clase de servlet [com.prueba1.LoginServlet]
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)
causa raíz

java.lang.ClassNotFoundException: com.prueba1.LoginServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:748)

项目树图:

【问题讨论】:

  • 你编译你的servlet了吗?您可以手动检查该类是否存在于com\prueba1 下吗?
  • java 文件存在于 com\prueba1 上,点击 Run ass..Run on server 时未编译 java 文件?我是否需要做其他事情来编译 java 文件?

标签: java servlets


【解决方案1】:

刚刚尝试在我自己的计算机上部署和运行您的代码,它运行良好。确保您的项目结构有效,将 LoginServlet.java 文件包含到项目权限中,并且 LoginServlet.class 文件在编译后位于正确的目录中。这是我的项目结构:

Make sure your class is at WEB-INF/classes

link to screenshot

如果你不能解决问题,你应该在编译后显示你的项目结构。如果我的截图对你没有帮助,也许我可以帮助你。不要忘记我正在使用 Maven 来构建项目。你的结构可能有点不同。

如果您使用的是 Maven,则将以下行添加到 pom.xml 文件的依赖项块中:

`

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

`

如果没有,请尝试在类声明块之前添加以下行:

@WebServlet(name="any name you want", urlPatterns="/login")

【讨论】:

  • 我使用 maven, weapp archetype 来构建应用程序,并且没有 .class 文件,我使用 Run as...run on server 来运行应用程序,我必须做些什么吗否则编译 .java 文件?
  • 我猜你正在使用 Eclipse。我在 Eclipse 中不强,但是您是否尝试通过选择“Project -> Build Automatically”来打开自动构建?
  • 选择了自动构建选项
  • 如果没有项目结构的屏幕截图,无法给您更多建议
  • 我已经在第一篇文章中发布了项目结构