<sessions-enabled>true</sessions-enabled>このようなタグを既述してください。これで、セッションが利用可能になります。これを忘れるとセッションの機能は動かないので注意してください。
ArrayList<String> msgs = (ArrayList<String>)session.getValue("messages");まず、getValueで"messages"という名前で保存しておいたArrayListを取得します。これがnullならば、新たにArrayListインスタンスを作成します。
if (msgs == null) msgs = new ArrayList<String>();
session.putValue("messages", msgs);サンプルでは、セッションをスタートしてからの経過秒数も表示しています。これは、あらかじめ経過秒数の値を計算して変数に収めておき、それを<%= %>タグで表示させているだけです。
long create = session.getCreationTime();getCreationTimeとgetLastAccessedTimeをそれぞれ変数に取り出し、最終アクセスからスタート時刻の値を引き、1000で割れば、経過した秒数がわかります。意外と簡単ですね。――最後に、「初期化」チェックボックスがONだったときの処理も見ておきましょう。
long last = session.getLastAccessedTime();
long time = (last - create) / 1000;
if (time < 0) time = 0;
String flg = request.getParameter("check");チェックボックスというのは、チェックがONなら値が送られますが、OFFだと値そのものが送られません。したがって、request.getParameter("check")で取り出した値がnullならばOFF、nullでなければONだと判断することができるのです。
if (flg != null){
session.invalidate();
session = request.getSession();
}
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.util.*" %> <% request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String flg = request.getParameter("check"); if (flg != null){ session.invalidate(); session = request.getSession(); } long create = session.getCreationTime(); long last = session.getLastAccessedTime(); long time = (last - create) / 1000; if (time < 0) time = 0; String input = request.getParameter("input"); if (input == null) input = ""; ArrayList<String> msgs = (ArrayList<String>)session.getValue("messages"); if (msgs == null) msgs = new ArrayList<String>(); if (!input.equals("")) msgs.add(0, input); session.putValue("messages", msgs); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Sample jsp</title> <style> h1{ font-size: 16pt; background: #AAFFAA; padding: 5px; } </style> </head> <body> <h1>Sample jsp page</h1> <p>これはサンプルで用意したページです。</p> <table> <form method="post" action="helo.jsp"> <tr> <td>入力</td> <td> <input type="text" id="input" name="input"> </td> </tr> <tr> <td></td> <td> <input type="checkbox" id="check" name="check"> <label for="check">初期化</label> </td> </tr> <tr> <td></td> <td> <input type="submit" value="送信"> </td> </tr> </form> </table> <hr> <p>(<%=time %> sec.)</p> <ol> <% for(int i = 0; i < msgs.size();i++){ %> <li><%=msgs.get(i) %></li> <% } %> </ol> </body> </html>
<< 前へ |