0

簡単な投稿 - リダイレクト - JSP を使用して取得したい。これが私がやった方法です。重要なサーブレットは次のとおりです。

public class PostRedirectGet extends HttpServlet {

    public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
            throws ServletException, IOException {

        getServletContext().getRequestDispatcher("/WEB-INF/getInformation.jsp")
                .forward(httpServletRequest,httpServletResponse);

    }

    public void doPost(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse)
            throws IOException {
        String firstName = httpServletRequest.getParameter("firstName");
        HttpSession httpSession = httpServletRequest.getSession();
        httpSession.setAttribute("firstName",firstName);
        httpServletResponse.sendRedirect(getServletContext().getContextPath()+"/getFormData");
    }
}

したがって、このサーブレット ( /index ) に対してget 要求が行われると、フォームが存在するgetInformation.jspのみが表示されます。

フォームは同じ URL ( /index ) に対して投稿要求を行い、今回は doPost が呼び出されます。ここでは、次のように firstName を保持します。

String firstName = httpServletRequest.getParameter("firstName");

次に、ユーザーを /getFormData にリダイレクトします。担当のサーブレットは次のとおりです。

public class Get extends HttpServlet {

    public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
            throws ServletException, IOException {

        String firstName = (String) httpServletRequest.getSession().getAttribute("firstName");
        httpServletRequest.setAttribute("firstName",firstName);
        getServletContext().getRequestDispatcher("/WEB-INF/showInformation.jsp")
                .forward(httpServletRequest, httpServletResponse);

    }
}

だからここで変数を取得します

String firstName = (String) httpServletRequest.getSession().getAttribute("firstName");

私の最初の質問は次のとおりです。1) この方法では、すべてのセッションで firstName を使用できますが、これは望ましくありません。では、2 つのサーブレット間で情報を渡すにはどうすればよいでしょうか。または、この値をどのようにクリアする必要がありますか?

次に、リクエストを次のような showInformation.jsp に転送します。

    Hello, your first name is: <%= request.getAttribute("firstName") %>

2 番目の質問は次のとおりです。2) 「;」がないのはなぜですか。ここでrequest.getAttribute("firstName)の後? このように正常に動作しますが、セミコロン (";") が必要になると思います。

セミコロンを置くと、jsp ファイルで次の例外が発生します。

 Syntax error on token ";", delete this token
4

1 に答える 1