2016-03-28 35 views
-1

Kod rd1Servlet çalışmıyor?

package requestdispatcher; 
public class rd1 extends HttpServlet { 
private static final long serialVersionUID = 1L; 

public rd1() { 
    super(); 

} 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String password=request.getParameter("pwd"); 
    PrintWriter out = response.getWriter(); 

    if(password.equals("servlet")) 
      { 
     RequestDispatcher rd=request.getRequestDispatcher("servlet2"); 
     rd.forward(request, response); 
    } 
    else{ 
     out.print("Sorry UserName or Password Error!"); 
     RequestDispatcher rd=request.getRequestDispatcher("index.html"); 
     rd.include(request, response); 
    } 
} 

}

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
<servlet> 
    <servlet-name>rd1</servlet-name> 
    <servlet-class>requestdispatcher.rd1</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>rd1</servlet-name> 
    <url-pattern>/servlet1</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>welcome</servlet-name> 
    <servlet-class>requestdispatcher.welcome</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>welcome</servlet-name> 
    <url-pattern>/servlet2</url-pattern> 
</servlet-mapping> 
</web-app> 

index.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <form action="servlet1" method="post"> 
    Name:<input type="text" name=UName/><br/> 
     password:<input type="password" name=pwd/><br/> 
    <input type="submit" value="login"/> 
</form> 
</body> 
</html> 

için sadece servlet ama submi üzerinde istek dağıtıcısı öğrenme başladı form tting no satırında boş işaretçi istisnası var. içinde 28 rd1 servlet if deyiminde parolayı karşılaştırdığım yerde koddan bahsetmiştim ... Ayrıca 500 serisinin hatasını aldığımı da belirtmek isterim. Ne yaptığımı söyleyebilir misiniz? yanlış? Ayrıca, başlangıçta "servlet" dışında parola (formda) girdiğimi ve kodun index.html sayfasına gönderilen "rd1" bölümünün "else" bölümünde çalışabileceğimi de unutmayın. index.html (çift tırnak etrafında pwd ve UName) içinde

cevap

0

Değişim bu:

<form action="servlet1" method="post"> 
    Name:<input type="text" name="UName"/><br/> 
     password:<input type="password" name="pwd"/><br/> 
    <input type="submit" value="login"/> 
</form> 

if -Bildirim boş-güvenli değildir. Bu kod satırı 28 mi? doPost bu Change :

String password=request.getParameter("pwd"); 
if (password!=null) 
{ 
if(password.equals("servlet")) 
    { 
     RequestDispatcher rd=request.getRequestDispatcher("servlet2"); 
     rd.forward(request, response); 
    } 
    else 
    { 
     errorHandling(request, response); 
    } 
} 
else 
{ 
    errorHandling(request, response); 
} 

private void errorHandling(request, response) 
{ 
out.print("Sorry UserName or Password Error!"); 
      RequestDispatcher rd=request.getRequestDispatcher("index.html"); 
      rd.include(request, response); 

}