【问题标题】:javax.servlet.ServletException: Class com.mq.sample.Hello is not a Servletjavax.servlet.ServletException:com.mq.sample.Hello 类不是 Servlet
【发布时间】:2016-11-08 06:18:23
【问题描述】:

我正在尝试创建简单的登录应用程序。我创建了一个登录页面和一个 servlet,但它给出了 ServletException

这是我的示例代码。

public class Hello extends HttpServlet{

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{  
        try{  

        response.setContentType("text/html");  
        PrintWriter out = response.getWriter();  

        String username=request.getParameter("username"); 
        String password=request.getParameter("password");
        out.println("hello");

        if(username.equals("xyz")&&password.equals("password"))
        {
            HttpSession session=request.getSession();  
            session.setAttribute("uname",username);
            RequestDispatcher rd=request.getRequestDispatcher("/Home.jsp");
            rd.forward(request, response);
        }
        else
        {
            RequestDispatcher rd=request.getRequestDispatcher("/login.html");
            out.println("<h4>Plz provide correct Username or password</h4>");
            rd.include(request,response);
        }


        out.close();  

                }catch(Exception e){System.out.println(e);}  
    }

此代码给出以下异常: 我不明白为什么会这样。

javax.servlet.ServletException: Class com.mq.sample.Hello is not a Servlet

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)
root cause

java.lang.ClassCastException: com.mq.sample.Hello cannot be cast to javax.servlet.Servlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

提前致谢

【问题讨论】:

  • 显示您的导入语句。 HttpServlet 在什么包中?
  • 检查部署中有多少不同的 servlet.jar 文件 - 可能是由两个不同的类加载器加载
  • 导入 javax.servlet.RequestDispatcher;导入 javax.servlet.ServletException;导入 javax.servlet.http.HttpServlet;导入 javax.servlet.http.HttpServletRequest;导入 javax.servlet.http.HttpServletResponse;导入 javax.servlet.http.HttpSession;
  • 只有一个jar文件
  • 你在用maven吗?

标签: java servlets


【解决方案1】:

您从 Tomcat 收到错误,请参阅 this link。所以问题是你的类路径中有 servlet jar 冲突。 从类路径中删除 javax.servlet-api.jar 并执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 2021-04-28
    • 2021-01-14
    • 2018-06-27
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多