シリーズJavaの画面表示のつづきです。今、JSPやってます。それも、JSPでMVCに分けるための、要素技術についてです。
前回フォワードをやりました。今回はセッションを使います。
これで、JSPのカオル姫方式版ができます。
カオル姫方式というのは、ここのブログでいっている話で、MVCのすべてのメソッド間で共有する共通領域を持っておき、その領域から、値を取り出したりセットすることによって、メソッドをMVCにわけるという方法です。
ということで、今日はセッションです。
■JSPのセッションのやりかた
JSPのセッションのやりかたは、こんなかんじだと思う
1.とりあえず<%@ page session="true" %>をかく。
そうすると、セッションがあれば、そのセッションをわたし、もしなければ、新規に作る
2.そうすると、sessionという変数が(宣言してなくても、この変数は使える)
sessionになるので、
session.setAttribute(項目名,値);
でセッションに値を設定し
値 = (キャストする型)session.setAttribute(項目名);
でセッションの値を取得できる。
3.その他は、サーブレットと同じである。
■今日のお題
そこで、index.jspが仮にコントローラー&モデルだとして、
1、username、title、msgを設定し
2、画面(View)部分のJSP(test2.jsp)で、
セッションの値を取得し、表示する
ってことを考える。
■ソース
そうすると、ソースはこんなかんじ(赤字の部分が、セッションの話)
●コントローラー&モデル部分(index.jsp)
<html> <head> <title>Hello World JSP</title> </head> <body> <%@ page session="true" %> <% //==============================// // セッションを設定する // //==============================// session.setAttribute("username","ウィリアムのいたずら"); session.setAttribute("title","テスト"); session.setAttribute("msg","ハローワールド"); //==============================// // ビューにフォワード // //==============================// application.getRequestDispatcher("/jsp/test2.jsp").forward(request,response); %> </body> </html> |
(上記 < > ¥ は、本当は半角)
●View部分(test2.jsp)
<html> <head> <title>Hello World JSP</title> </head> <%@ page session="true" %> <% //==============================// // セッションを受け取る // //==============================// String username = (String)session.getAttribute("username"); String title = (String)session.getAttribute("title"); String msg = (String)session.getAttribute("msg"); %> <body> <H1><%=title%></H1> <BR> <B><%=username%></B>さんへ<BR> <%=msg%> </body> </html> |
(上記 < > ¥ は、本当は半角)
なお、今回の話題とは直接は外れるが(次回以降の話題)
View(=画面表示)の部分は、セッションの部分と表示部分を分離し、
必要な変数を、セッションからとってくる部分をまとめて書いてしまい、
VIEWのところは、その取得した変数を使って、書き出すようにしておくと
(上記の例)いろいろと、やりやすい。
てなことで、次回のこのシリーズに続きます。