2016-03-28 2 views
-1

Код для rd1Сервлет не работает?

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> 

Я только начал изучать запрос диспетчеру в сервлеты, но на submi tting form У меня есть исключение null-указателя в строке no. 28 in rd1 сервлет, где я сравниваю пароль в if заявление Я упомянул его в коде ... Также хочу упомянуть, что я получаю ошибку серии 500. Можете ли вы сказать мне, что я сделал неправильно? Также обратите внимание, что изначально я вводил пароль (в форме), отличный от «сервлета», чтобы я мог запустить код в «else» части «rd1», который отправляет меня на страницу index.html.

ответ

0

Изменить это в index.html (двойные кавычки вокруг pwd и UName):

<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 -Statement не является нулевым безопасным. Является ли эта строка кода 28? Измените это в doPost:

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); 

} 
Смежные вопросы