0

そのため、現在、JSPを学習しようとしていますが、この問題を回避する方法がわかりません。

現在、いくつかの形式のindex.jspページがあります。1つのフォームには、文字列を作成するためにサーブレットtest.javaに送信する2つのテキストフィールドがあります。文字列を作成した後、サーブレットはindex.jspにリダイレクトします。

元のindex.jspアドレス: http://localhost:8080/TestJSPConversion/

リダイレクト後のアドレスは http://localhost:8080/TestJSPConversion/test

index.jspで別のフォームを使用しようとすると問題が発生し、アドレスの空白のページに移動します。 http://localhost:8080/TestJSPConversion/test?author=Peter+Johnson

サーブレットからリダイレクトするために使用しているメソッド(request.getRequestDispatcher( "/ index.jsp")。forward(request、response);が原因だと思いますが、この問題を修正する方法がよくわかりません。サーブレットがindex.jspにリダイレクトした後でも、フォームを機能させたいのですが。

サーブレットコード:

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    // Get parameters from the request.
    String name = request.getParameter("name");
    String email = request.getParameter("email");

    String message = null;
    GregorianCalendar calendar = new GregorianCalendar();
    if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
        message = "Good Morning, ";
    } else {
        message = "Good Afternoon, ";
    }
    message += name + " with the email, " + email;

    request.setAttribute("message", message);
    request.getRequestDispatcher("/index.jsp").forward(request, response);
}

Index.jspコード:

<h2>Choose authors:</h2>
<form method="get">
    <input type="checkbox" name="author" value="Tan Ah Teck">Tan
    <input type="checkbox" name="author" value="Mohd Ali">Ali 
    <input type="checkbox" name="author" value="Kumar">Kumar 
    <input type="checkbox" name="author" value="Peter Johnson">Peter
    <input type="submit" value="Query">
</form>

<c:set var="authorName" value="${param.author}" />
</br>
<c:if test="${not empty authorName}">
    <c:out value="${authorName}" />
</c:if>
</br>
<form  action="test" method="POST">  
    First Name: <input type="text" name="name" size="20"><br />  
    Surname: <input type="text" name="email" size="20">  
    <br /><br />  
    <input type="submit" value="Submit">  
</form>
<c:out value="${message}" /> 
4

3 に答える 3

1

(EL)response.sendRedirect("index.jsp?message=hello");を使用して表示してみてください。${param.message}の投稿としてメソッドを使用している場合は<form action="test" method="POST">、メソッドにコードを記述する必要がありますdoPost

于 2013-02-21T15:20:50.907 に答える
0

他にもaction="test"を設定し<form>ます。

これにより、domain / TestJspConnection / test / test ...のようなURLが表示される場合は、<form>属性としてaction = "/ TestJSPConnection/test"を試してください。

そうそう、これにはまったく気づかなかった!...あなたはあなたのセブレットにdoGet()を実装していなかった...だから<form method="get" >あなたは空白のページに着陸している

だから..2つの解決策:

1)サーブレットにdoGet()を実装する
か、
2)method="post"最初の形式に設定します

于 2013-02-21T15:06:44.930 に答える
0

最初:doPostのみを実装するため、method=Getを使用した最初のフォームが問題になります。不合格。

2番目:転送の代わりにsendRedirectを使用する必要があります。このように、ブラウザで更新を押しても、データの再投稿に関する警告は表示されません。サーバープロセスが完了し、結果をJSPで表示する場合は、sendRedirectを使用することをお勧めします。

よろしく

于 2013-02-21T15:22:37.100 に答える