2016-03-28 5 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にリクエストディスパッチャを学び始めました私は行番号のnullポインタ例外を持っているフォームをtting。 28 in rd1サーブレットちょうど私がifの文章でパスワードを比較したところです。私はコードで言及しました...また、私はシリーズ500のエラーを受けていると言いたいと思います。違う?また、最初は "servlet"以外のパスワードを入力していますので、 "rd1"の "else"部分でコードを実行してindex.htmlページに送ってください。

答えて

0

変更このindex.htmlpwdUName周りに二重引用符)で:

<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はnullで安全ではありません。このコード行は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); 

} 
関連する問題