2016-11-08 33 views
0

我想創建簡單的登錄application.I創建一個登錄頁面和一個servlet的,但它是javax.servlet.ServletException:類com.mq.sample.Hello不是一個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) 

在此先感謝

+1

顯示您的進口報表。 「HttpServlet」包含什麼包? –

+0

檢查您的部署中有多少個不同的servlet.jar文件 - 可能是它由兩個不同的類加載器加載 – soorapadman

+0

import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; –

回答

1

你從Tomcat收到錯誤,請參閱this link。所以問題在於你的類路徑中存在servlet jar衝突。 從classpath中移除javax.servlet-api.jar並執行此操作。 enter image description here

相關問題