- Home ›
- サーブレット/JSP入門 ›
- セッション管理
セッションの破棄
広告
今度は既に開始されているセッションを破棄してみます。
セッションを破棄するには「HttpSession」インターフェースで定義されている"invalidate"メソッドを使います。
invalidate public void invalidate()
Invalidates this session then unbinds any objects bound to it. Throws: java.lang.IllegalStateException - if this method is called on an already invalidated session
例えば下記のように記述します。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); session.invalidate(); }
サンプルプログラム
では簡単に試してみます。
web.xmlファイルは下記のようにしました。
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>sessiontest</servlet-name> <servlet-class>SessionTest3</servlet-class> </servlet> <servlet> <servlet-name>invalidatesession</servlet-name> <servlet-class>InvalidateSession3</servlet-class> </servlet> <servlet-mapping> <servlet-name>sessiontest</servlet-name> <url-pattern>/sessiontest</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>invalidatesession</servlet-name> <url-pattern>/invalidatesession</url-pattern> </servlet-mapping> </web-app>
プログラムは下記の通りです。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Enumeration; public class SessionTest3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(false); out.println("<html>"); out.println("<head>"); out.println("<title>セッションテスト</title>"); out.println("</head>"); out.println("<body>"); if (session == null){ out.println("<p>セッション開始します</p>"); session = request.getSession(true); } out.println("<a href=\"/session/invalidatesession\">セッションを破棄</a>"); out.println("</body>"); out.println("</html>"); } }
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Enumeration; public class InvalidateSession3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(false); out.println("<html>"); out.println("<head>"); out.println("<title>セッションテスト</title>"); out.println("</head>"); out.println("<body>"); if (session != null){ out.println("<p>セッションは開始されています</p>"); out.println("<p>セッションを破棄し確認します。</p>"); session.invalidate(); session = request.getSession(false); if (session == null){ out.println("<p>セッションは破棄されました</p>"); }else{ out.println("<p>セッションが残っています</p>"); } }else{ out.println("<p>セッションがありません</p>"); } out.println("</body>"); out.println("</html>"); } }
上記をコンパイル後に「d:\servlet-sample\session\WEB-INF\classes\」ディレクトリにクラスファイルを移動した後で、ブラウザで「http://localhost:8080/session/sessiontest」へアクセスしてみます。
まずセッションを開始します。次に「セッションの破棄」をクリックして下さい。
まずセッションの有無を確認した上でセッションを破棄します。そしてセッションが開始されているかどうかを再度確認して表示しています。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。