簡體   English   中英

訪問 servlet class 時出現錯誤 500

[英]Error 500 occurs when accessing the servlet class

嘗試啟動應用程序時,訪問 ControllerServlet 時出現錯誤 500(HTTP 狀態 500 - 內部服務器錯誤),其代碼如下所示


import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class ControllerServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (req.getParameter("x") == null || req.getParameter("y") == null || req.getParameter("r") == null || req.getParameter("key") == null) {
            req.getServletContext().getRequestDispatcher("/index.jsp").forward(req, resp);
        }
        else{
            getServletContext().getNamedDispatcher("AreaChecker").forward(req, resp);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (req.getParameter("key").equals("update")) {
            getServletContext().getNamedDispatcher("AreaChecker").forward(req, resp);
        }
        else{
            req.getServletContext().getNamedDispatcher("Controller").forward(req, resp);
        }
    }

} 

錯誤文本:

類型異常報告

消息Класс [com.example.ControllerServlet] не является сервлетом

說明 服務器遇到了阻止它完成請求的意外情況。

例外

jakarta.servlet.ServletException: Класс [com.example.ControllerServlet] не является сервлетом org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353) org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$Connectio nHandler.process(AbstractProtocol.java:872) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1705) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java: 49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat. util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.Thread.run(Thread.Z 93F725A07423FE1C889F448B33D21F46Z:829) 根本原因

java.lang.ClassCastException: class com.example.ControllerServlet cannot be cast to class jakarta.servlet.Servlet (com.example.ControllerServlet is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @7abda5a1; jakarta.servlet. Servlet is in unnamed module of loader java.net.URLClassLoader @37afeb11) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92 ) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Z 93F725A07423FE1C889F448B33D21F46Z:353) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:872) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1705) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org. apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.ZB6EFD606D118D0F62066E31419 FF04CCZ.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.線程運行(線程.java:829)

Tomcat 版本:10.0.14

我的問題是:如何避免這個錯誤以及需要修復什么?

問題在這里:

java.lang.ClassCastException: class com.example.ControllerServlet cannot be cast to class jakarta.servlet.Servlet

這里:

import javax.servlet.ServletException;
import javax.servlet.http.*;

和這里:

Tomcat 版本:10.0.14

您在 servlet 容器中有一個javax servlet,它實現了 servlet 規范的第 5 版,該規范現在位於jakarta命名空間中。

您需要從jakarta包而不是javax擴展您的 servlet。

有關詳細信息,請參閱以下鏈接:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM