2014-10-13 4 views
1

저는 서블릿의 초보자입니다. 나는 sevlets 예외 아래에지고있다.서블릿을 실행할 때 서블릿 예외

내 web.xml 코드.

<display-name>LoginServlets</display-name> 
    <servlet> 
     <servlet-name>LoginServlet</servlet-name> 
     <servlet-class>LoginServlet</servlet-class> 
    </servlet> 


    <servlet-mapping> 
     <servlet-name>LoginServlet</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 
    <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> 

이 서블릿을 호출하는 HTML 양식.

<body> 
    <form action="login" method="get"> 
     <table> 
      <tr> 
       <td>UserName</td> 
       <td><input type="text" name="username" /></td> 
      </tr> 
      <tr> 
       <td>Password</td> 
       <td><input type="password" name="password" /></td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="SignIn" /></td> 
      </tr> 
     </table> 
    </form> 
</body> 

예외적으로 발생합니다.

javax.servlet.ServletException: Error instantiating servlet class LoginServlet 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    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:1070) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
    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) 

근본 원인.

java.lang.ClassNotFoundException: LoginServlet 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    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:1070) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
    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) 

마지막 날 비슷한 코드가 정상적으로 작동합니다. 그러나 나는 또한 SVN 같은 일을 코드와 함께 새 프로젝트를 만들 설치 않았다. 하지만 작동하지 않습니다. 나는 또한 샘플을 다운로드하지만 아무 것도 작동하지 않습니다.

이것은 내 LoginServlet 클래스입니다. 그것은 SRC-myPackage에 클래스의 이름은 com.loginservlets.LoginServlet입니다

package com.loginservlets; 
@WebServlet("/LoginServlet") 
public class LoginServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public LoginServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
     System.out.println("LoginServlet"); 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 
    *  response) 
    */ 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     System.out.println("Get"); 
     response.setContentType("text/html"); 
     PrintWriter pw = response.getWriter(); 
     pw.println("HelloWorld"); 
     out.close(); 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
    *  response) 
    */ 
    protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     System.out.println("Post"); 
    } 

} 
+1

로 변경하십시오. LoginServlet 클래스의 코드를 추가하십시오. 패키지에 담겨 있습니까? – Jens

+0

LoginServlet의 코드를 게시하십시오. – BetaRide

+1

서블릿 클래스에 전체 패키지 이름이 필요하다고 생각합니다. –

답변

5

> JavaResources-입니다. 아니요 LoginServlet.

web.xml에서 서블릿을 선언하는 것은 어노테이션으로 선언함으로써 중복된다는 점에 유의하십시오. 당신이 주석과 동일한 기능을 수행 할 수 있기 때문에 web.xml 파일에 선언 할 이유가 없습니다 : web.xml에서 동일한의

당신이 @WebServlet와 서블릿 클래스 정의를 주석 한 이후
@WebServlet("/login") 
+0

감사합니다. 실제로 이클립스에서 서블릿 파일을 만든 이유는 이클립스가 자동으로이 주석을 작성한 이유입니다. 그 전에는 웹 전개 서적을 사용하여 서블릿을 시작했습니다. – PKTomar

+0

그러나 @WebServlet ("/ login"); @WebServlet (urlPatterns = { "/ login"})이 정상적으로 작동하는 동안 작동하지 않습니다. – PKTomar

+0

실제로'@WebServlet ("/ login")'은 하나의 속성만을 언급하기 때문에 문서에 따라 잘 동작해야합니다. 그러나 나는 비슷한 문제에 직면 해 있었고 'urlPatterns'이이를 해결했다고 명시 적으로 언급했다. – Kishore

0

, 선언은 필요하지 않습니다. @WebServlet("/LoginServlet")@WebServlet(urlPatterns = {"/login"})

관련 문제