HttpSession session = request.getSession(); または HttpSession session = request.getSession(boolean create);
- HttpSession session = request.getSession(false);
- if (session == null) {
- // session がない場合の処理;
- } else {
- // session がある場合の処理;
- }
セッション・オブジェクトがない | セッション・オブジェクトがすでにある | |
---|---|---|
getSission() | セッション・オブジェクトを生成 | セッション・オブジェクトへの参照 |
getSission(true) | ||
getSission(false) | null |
- HttpSession session = request.getSession(false);
- if (session != null) {
- session.invalidate(); // セッション・オブジェクトを無効にする
- }
- session = request.getSession(false);
Top
- HttpSession session = request.getSession(false);
- if (session == null) {
- // Login エラーの処理 (たとえば、throw new ServletException();)
- }
- Enumeration names = session.getAttributeNames();
- while (names.hasMoreElements()){
- String name = (String)names.nextElement();
- Object value = session.getAttribute(name);
- out.println("name = " + name + ", value = " + value.toString());
- }
Cookie | セッション・オブジェクト | |
---|---|---|
オブジェクトの獲得と確認 | Cookie[] cookies = request.getCookies(); if (cookies == null) |
HttpSession session = request.getSession(); または HttpSession session = request.getSession(false); if (session == null) |
値の取得 | String value = null; for (int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals(NAME)) { value = cookies[i].getValue(); break; } } |
Object value = session.getAttribute(NAME); |
値の設定 | Cookie cookie = new Cookie(NAME, value); cookie.setMaxAge(...); response.addCookie(cookie); |
session.setAttribute(NAME, value); |
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.util.*;
- public class SessionObject41 extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // out オブジェクトを取得する
- response.setContentType("text/html;charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- // セッションオブジェクトを取得する
- HttpSession session = request.getSession();
- out.println("<html>");
- out.println("<head><title>Session Object</title></head>");
- out.println("<body>");
- out.println("セッションオブジェクトに以下の値を設定しました。");
- out.println("<hr/>");
- out.println("<table>");
- out.print("<tr>");
- out.print("<th>name</th>");
- out.print("<th>value</th>");
- out.print("</tr>");
- Enumeration names = request.getParameterNames();
- while (names.hasMoreElements()) {
- String name = (String)names.nextElement();
- String value = request.getParameter(name);
- session.setAttribute(name, value);
- out.print("<tr>");
- out.print("<td>" + name + "</td>");
- out.print("<td>" + value + "</td>");
- out.print("</tr>");
- }
- out.println("</table>");
- out.println("</body>");
- out.println("</html>");
- }
- }
□ 実行結果
http://localhost:8080/jmwapp/servlet/SessionObject41?id=A123&name=maruno
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.util.*;
- public class SessionObject42 extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // out オブジェクトを取得する
- response.setContentType("text/html;charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- // セッションオブジェクトを取得する
- HttpSession session = request.getSession(false);
- if (session == null) {
- throw new ServletException("The session object was not found.");
- }
- out.println("<html>");
- out.println("<head><title>Session Object</title></head>");
- out.println("<body>");
- out.println("セッションオブジェクトから以下の値を取得しました。");
- out.println("<hr/>");
- out.println("<table>");
- out.print("<tr>");
- out.print("<th>name</th>");
- out.print("<th>value</th>");
- out.print("</tr>");
- Enumeration names = session.getAttributeNames();
- while (names.hasMoreElements()) {
- String name = (String)names.nextElement();
- Object value = session.getAttribute(name);
- out.print("<tr>");
- out.print("<td>" + name + "</td>");
- out.print("<td>" + value.toString() + "</td>");
- out.print("</tr>");
- }
- out.println("</table>");
- out.println("</body>");
- out.println("</html>");
- }
- }
□ 実行結果
http://localhost:8080/jmwapp/servlet/SessionObject42
セッション・オブジェクトがない場合
Login Form | V |
Login 失敗メッセージ |
|
Welcome メッセージ --> |
ペット・リスト --> |
発注リスト |
- <?xml version="1.0" encoding="Shift_JIS" ?>
- <!DOCTYPE web-app
- PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
- <!-- jmwappアプリケーションの振る舞いを定義する -->
- <web-app>
- <context-param>
- <param-name>username</param-name>
- <param-value>maruno</param-value>
- </context-param>
- <context-param>
- <param-name>password</param-name>
- <param-value>marunopass</param-value>
- </context-param>
- :
- (その他の要素)
- :
- </web-app>
- <!-- login41.html -->
- <html>
- <head>
- <title>Pet Shop</title>
- </head>
- <body>
- <h1>Pet Shop Login</h1>
- <hr/><p>
- <form method="post" action="/jmwapp/servlet/LoginServlet41">
- <p>ユーザー名: <input type="text" name="username"></p>
- <p>パスワード: <input type="password" name="password"></p>
- <p><input type="submit" value="login">
- <input type="reset" value="reset">
- </p>
- </form>
- </p>
- </body>
- </html>
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class LoginServlet41 extends HttpServlet {
- // コンテキスト初期化パラメータ用変数
- private String userName = null;
- private String password = null;
- // リンク先のURL
- private static final String PET_SERVLET_URL = "/jmwapp/servlet/PetServlet41";
- private static final String LOGIN_FORM_URL = "/jmwapp/html/login41.html";
- public void init(){
- // ユーザ名とパスワードをコンテキスト初期化パラメータから受け取る
- ServletContext context = getServletContext();
- userName = context.getInitParameter("username");
- password = context.getInitParameter("password");
- }
- // FORM 情報を受け取って認証し、セッションオブジェクトを作成する
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // FORM 情報を受け取る
- String inputUserName = request.getParameter("username");
- String inputPassword = request.getParameter("password");
- // セッション・オブジェクトを破棄する
- HttpSession session = request.getSession(false);
- if (session != null) {
- session.invalidate();
- }
- response.setContentType("text/html; charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- out.println("<html>");
- out.println("<head>");
- out.println("<title>Pet Shop</title>");
- out.println("</head>");
- out.println("<body>");
- out.println("<h1>Login Servlet</h1>");
- out.println("<hr/>");
- // FORM 情報が入力されているか確認
- if (inputUserName.equals("") || inputPassword.equals("")) {
- out.println("<p><font size=\"+1\" color=\"red\">" + "<b>ユーザー名とパスワードを入力してください。 </b></font></p>");
- // FORM 情報の認証を行い、認証された場合
- } else if (inputUserName.equals(userName) &&
- inputPassword.equals(password)) {
- // セッション・オブジェクトを作成しユーザ情報を格納する
- session = request.getSession(true);
- session.setAttribute("username", inputUserName);
- out.println("<p><font size=\"+1\" color=\"blue\"><b>ようこそ " +
- inputUserName + " さん!</b></font>");
- out.println("<br/>下のリストから選んでください。</P> ");
- out.println("<p><a href=\"" +
- PET_SERVLET_URL +
- "\">" + "Pet List</a></p>");
- // 認証されなかった場合
- }else {
- out.println("<p><font size=\"+1\" color=\"red\">" + "<b>正しいユーザー名とパスワードを入力してください。</b></font></p>");
- }
- out.println("<p><a href=\"" +
- LOGIN_FORM_URL +
- "\">" + "Login Form に戻る</a></p>");
- out.println("</body>");
- out.println("</html>");
- out.close();
- }
- }
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class PetServlet41 extends HttpServlet {
- // リンク先のURL
- private static final String ORDER_SERVLET_URL = "/jmwapp/servlet/OrderServlet41";
- private static final String LOGIN_FORM_URL = "/jmwapp/html/login41.html";
- // ログインされたユーザに対して商品一覧を表示する
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- final String[][] PET_LIST = {{"dog", "いぬ"}
- , {"cat", "ねこ"}
- , {"ferret", "フェレット"}
- , {"rabbit", "うさぎ"}
- , {"turtle", "かめ"}
- };
- response.setContentType("text/html; charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- out.println("<html>");
- out.println("<head>");
- out.println("<title>Pets Online</title>");
- out.println("</head>");
- out.println("<body>");
- out.println("<h1>Pets List</h1>");
- out.println("<hr/>");
- // セッション・オブジェクトの獲得
- HttpSession session = request.getSession(false);
- // セッション・オブジェクトが獲得できなかった場合
- if (session == null){
- out.println("<p><font size=\"+2\" color=\"red\"><b>" +
- "login してください。</b></font></p>");
- // セッション・オブジェクトが獲得できた場合
- } else {
- // セッション・オブジェクトからユーザ名を獲得
- String userName = (String)session.getAttribute("username");
- out.println("<h2>こんにちは! " + userName + " さん、</h2>");
- out.println("<p>つぎのリストから選んでください。</p>");
- out.println("<hr/>");
- // 商品一覧を表示する
- out.println("<form method=\"post\" action=\"" +
- ORDER_SERVLET_URL +
- "\">");
- for (int i = 0; i < PET_LIST.length; i++) {
- out.println("<input type=\"checkbox\" " +
- "name=\"product\" value=\"" +
- PET_LIST[i][0] +
- "\" >");
- out.println(PET_LIST[i][1] + "<br/>");
- }
- out.println("<hr/>");
- out.println("<input type=\"submit\" value=\"発注\">");
- out.println("<input type=\"reset\" value=\"reset\">");
- out.println("</form>");
- }
- out.println("<p><a href=\"" +
- LOGIN_FORM_URL +
- "\">" + "Login Form に戻る</a></p>");
- out.println("</body>");
- out.println("</html>");
- out.close();
- }
- }
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class OrderServlet41 extends HttpServlet {
- // リンク先のURL
- private static final String LOGIN_FORM_URL = "/jmwapp/html/login41.html";
- // 商品一覧から選択された FORM 情報をもとに一覧で表示する
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html; charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- out.println("<html>");
- out.println("<head>");
- out.println("<title>Pet Shop</title>");
- out.println("</head>");
- out.println("<body>");
- out.println("<h1>注文の受け付け</h1>");
- out.println("<hr/><br/>");
- // セッション・オブジェクトの獲得
- HttpSession session = request.getSession(false);
- // セッション・オブジェクトが獲得できないとき
- if (session == null){
- out.println("<p><font size=\"+2\" color=\"red\"><b>" +
- "login してください。</b></font></p>");
- // セッション・オブジェクトが獲得できたとき
- } else {
- // セッション・オブジェクトからユーザ名を獲得
- String userName = (String)session.getAttribute("username");
- // 選択された商品情報を獲得
- String product[] = request.getParameterValues("product");
- // FORM 情報が入力されているか確認
- if (product == null) {
- product = new String[0];
- }
- // 選択一覧を表示する
- out.println("<table align=\"center\" " +
- "border=\"1\" width=\"200\">");
- out.println("<caption align=\"top\"> " +
- userName + " さんの 発注リスト</caption>");
- out.println("<tr><th>Name</th></tr>");
- for (int i = 0; i < product.length; i++){
- out.println("<tr><td>" + product[i] + "</td></tr>");
- }
- out.println("</table>");
- }
- out.println("<p><a href=\"" +
- LOGIN_FORM_URL +
- "\">" + "Login Form に戻る</a></p>");
- out.println("</body>");
- out.println("</html>");
- out.close();
- }
- }
□ 実行結果
http://localhost:8080/jmwapp/html/login41.html
- <html>
- <head>
- <title>じゃんけん </title>
- </head>
- <body>
- <form method="get" action="../servlet/Janken41">
- ●何を出しますか?<br/>
- <input type="radio" name="janken" value="0" checked/>ぐー
- <br/>
- <input type="radio" name="janken" value="1" />ちょき
- <br/>
- <input type="radio" name="janken" value="2" />ぱー
- <br/><br/>
- ●最初から勝負する?
- <input type="checkbox" name="reset" value="true" />
- <br/><br/>
- <input type="submit" value="勝負" />
- </form>
- </body>
- </html>
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class Janken41 extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException,IOException {
- String[] te = {"ぐー", "ちょき", "ぱー"};
- char[][] kekka = {{'分', '勝', '負'} // ぐー
- , {'負', '分', '勝'} // ちょき
- , {'勝', '負', '分'}}; // ぱー
- //コンピューター ぐー ちょき ぱー
- int user = 0;
- try {
- user = Integer.parseInt(request.getParameter("janken"));
- } catch (NumberFormatException e) {
- }
- int computer = (int)(Math.random() * 3);
- int win = 0; // 勝カウンター
- int lose = 0; // 負カウンター
- int draw = 0; // 分カウンター
- // ここにコードを記述してください。
- // 表示
- response.setContentType("text/html;charset=iso-2022-jp");
- PrintWriter out = response.getWriter();
- out.println("<html>");
- out.println("<head>");
- out.println("<title>勝負結果</title>");
- out.println("</head><body>");
- out.println("<h1>");
- // ここにコードを記述してください。
- out.println("</h1>");
- getServletContext().getRequestDispatcher("/html/janken41.html").include(request, response);
- out.println("</body>");
- out.println("</html>");
- out.close();
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
- }
□ 実行結果
http://localhost:8080/jmwapp/html/janken41.html
--> |
<!ELEMENT session-config (session-timeout?)> <!ELEMENT session-timeout (#PCDATA)>
<session-config> <session-timeout>30</session-timeout> </session-config>
session.setMaxInactiveInterval(1800);