2

RequestDispatcher を呼び出すと、リクエストを処理する代わりに、JSP ページ自体が出力としてレンダリングされます...「Account Created」行の後に JSP コンテンツが存在します。

//サーブレットブロック

if(i==1){
            PrintWriter pw = response.getWriter();
            pw.println("Account Created!!");
            RequestDispatcher rd = request.getRequestDispatcher("Login.jsp");
            rd.include(request, response);
            System.out.println("Record Updated!!!");
        }

//ブラウザでレンダリングされた出力:

Account Created!!

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<link rel="icon" type="image/ico" href="favicon.ico"></link> 
<link rel="shortcut icon" href="favicon.ico"></link>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<form action="./Authentication" method="post">
    <p>Enter username<input type="text" name="Uname"></p>
    <p>Enter password<input type="password" name="Pword"></p>
    <input type="submit" value="Login"> 
</form>
</body>
</html>
4

2 に答える 2

1

サーブレットでライターを取得してはならず、手動で文字列を書き込むべきではRequestDispatcher#forward()なく、代わりにを使用する必要がありますinclude()。そうしないと、JSP が適切なtext/htmlコンテンツ タイプを設定できないため、すべてが Web ブラウザによってプレーン テキストとして解釈されます。

そのサーブレット ブロックを次のように書き換えて、JSP が適切に機能するようにします。

if (i == 1) {
    request.getRequestDispatcher("Login.jsp").forward(request, response);
}

以下も参照してください。

于 2012-06-20T12:28:07.313 に答える