ページを移動するには?
さて、続いてサーブレットの修正です。が、こちらは実はもう一ひねりが必要です。それは「セッションに値を設定した後、JSPのページに表示を移動する」という処理を用意するからです。
サーブレットでHTMLのソースコードをずらずらと出力してフォームなどを画面に表示し、そこからJSPに送信するのであれば、ページの移動などは不要です。けれど、ここでは「JSPからサーブレットに送信したら、サーブレットで値を処理し、再びJSPに送り返す」ということを行なわせたいのです。つまり、サーブレットで画面を表示するのではなく、サーブレットは必要な処理だけをして、表示は再びJSPで行なわせるわけですね。
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String msg = (String)request.getParameter("msg");
if (msg != null){
msg = "送信ありがとう、" + msg + "さん!";
} else {
msg = "";
}
response.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
session.setAttribute("message",msg);
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
dispatcher.forward(request,response);
}
JSPからサーブレットに送信すると、再びJSPに表示が戻される。 |
こんな感じのメソッドになりました。見慣れないメソッドがいくつも登場していますね。これらが、ページ移動のための処理を行なっているのです。