2012-07-15 48 views
0
錯誤的servlet

我已經開發出了以下應用程序使用servlet但在輸入用戶名和密碼,我沒有得到第二page..Please勸...關於對執行

第一個servlet是..

package Demo; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class SendRedirectServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse 
      response)throws ServletException, IOException { 
      response.setContentType("text/html"); 
      PrintWriter pw = response.getWriter(); 
      String name = request.getParameter("username"); 
      String password = request.getParameter("password"); 
      if(name.equals("james")&& password.equals("abc")){ 
      response.sendRedirect("Demo/ValidUserServlet"); 
      } 
      else{ 
      pw.println("u r not a valid user"); 
      } 
      } 
} 

的第二個servlet是..

package Demo; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class ValidUserServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse 
       response)throws ServletException, IOException { 
       PrintWriter pw = response.getWriter(); 
       pw.println("Welcome to roseindia.net " + " "); 
       pw.println("how are you"); 
      } 

} 

和login.html的文件...

<html> 

<head> 
<title>New Page 1</title> 
</head> 

<body> 

<form method="post" action="SendRedirectServlet"> 
    <p>Enter your name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input type="text" name="username" size="20"/></p> 
    <p>Enter your password&nbsp; <input type="text" name="password" 
    size="20"/></p> 
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp; 
    <input type="submit" value="Submit" name="B1"/></p> 
</form> 

</body> 

</html> 

終於在web.xml是..

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
    <servlet-name>Zulfiqar</servlet-name> 
    <servlet-class>Demo.SendRedirectServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Zulfiqar</servlet-name> 
    <url-pattern>/SendRedirectServlet</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>Demo.ValidUserServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>/ValidUserServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

我得到的第一頁(HTTP://本地主機:9050 /的sendRedirect/login.html的)輸入用戶名和密碼,但點擊後時提交按鈕,我碰到下面的錯誤..

INFO: Marking servlet Zulfiqar as unavailable 
15 Jul, 2012 8:14:56 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet Zulfiqar 
java.lang.ClassNotFoundException: Demo.SendRedirectServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:124) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
15 Jul, 2012 8:20:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
INFO: Servlet Zulfiqar is currently unavailable 

所做的修改建議,但仍然得到這個錯誤...

INFO: Marking servlet Zulfiqar as unavailable 
15 Jul, 2012 9:11:48 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet Zulfiqar 
java.lang.ClassNotFoundException: Demo.SendRedirectServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:124) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
15 Jul, 2012 10:06:42 PM org.apache.catalina.core.StandardWrapperValve invoke 
INFO: Servlet Zulfiqar is currently unavailable 
+0

請告知你們這個 – user1508454 2012-07-15 16:49:08

回答

0

response.sendRedirect("Demo/ValidUserServlet");

應改爲

response.sendRedirect("/ValidUserServlet");

只有這個URL模式將調用Servlet,在web.xml文件部分提到:

<servlet>  
    <servlet-name>Hello</servlet-name>  
    <servlet-class>Demo.ValidUserServlet</servlet-class> 
</servlet> 
<servlet-mapping>  
    <servlet-name>Hello</servlet-name>  
    <url-pattern>/ValidUserServlet</url-pattern> 
</servlet-mapping> 

但你的錯誤似乎在按下提交按鈕後,來自另一個servlet? 如Hardik提到的,檢查servlet類是否退出WEB-INF/classes的Demo文件夾。

如果您正在從Eclipse運行項目,請執行清理並重建項目。大部分時間,這個固定班級沒有發現錯誤。

+0

沒有,它仍然顯示錯誤 – user1508454 2012-07-15 16:37:03

+0

只是交叉檢查我已經更新了錯誤堆棧 – user1508454 2012-07-15 16:38:54

0

首先,不鼓勵在大寫/標題的情況下使用包名。始終使用小寫字母來定義軟件包名稱。

其次,改變

response.sendRedirect("Demo/ValidUserServlet"); 

response.sendRedirect("/ValidUserServlet"); 

應該工作在你的web.xml提及。

Tomcat有一些熱部署問題,因爲它有時無法加載實際存在於類路徑中的類。

所以,檢查你的tomcat是否加載了新的servlet類。 重新編譯併發布Web項目。

java.lang.ClassNotFoundException: Demo.SendRedirectServlet 

檢查你的目錄結構。

是否SendRedirectServletDemo目錄下存在於/WEB-INF/class/Demo/SendRedirectServlet