セッションとは?
**セッションは、サーバーにアクセスするクライアントユーザーごとにサーバーによって作成されるコンテナーです。**このコンテナに保存されたデータは、複数のリクエストで共有できます。さらに、このコンテナは現在のユーザーにのみ属し、一意のIDを持っています。セッションテクノロジーはサーバー側のセッションデータにアクセスすることです
セッションの特徴
各セッションにはIDがあり、Key-Value
データへのアクセスには存続時間があり
ます。各セッションのJESSIONIDは異なるため、各ブラウザは他のブラウザの影響を受けずに独自のデータにアクセスできます
セッションは、セッションがデータにアクセスする方法を示してい
ますか?
セッションの取得
HttpSession request.getSession()セッションオブジェクトがある場合はセッションオブジェクトを取得し、作成されたセッションを返します。セッションがない場合は、セッションオブジェクトを作成し
てデータを保存します
setAttribute(key、value)
データを読み取ります
getAttribute(key)
セッションのIDを取得します
String session.getId( )
セッションの破壊
1.時間はセッションの生存時間を超え
ます。自動的に破壊されたセッションのデフォルトの生存時間は30分で、tomcatのグローバル構成ファイルweb.xml(tomcat / config / web.xml)で設定できます。 (単位/分)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--将session的存活时间设置成1小时(60分钟)-->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
2.サーブレットで** session.invalidate()**メソッドを呼び出して、セッションを破棄します
セッションの永続性
ブラウザを閉じるとJSESSIONIDが消え、再度アクセスすると新しいセッションオブジェクトが再作成されます。この操作はより多くのリソースを消費するため、セッションの永続性を達成する必要があります。次にそれを使用するときに、新しいセッションを作成せずに、ブラウザーから以前のJSESSIONIDを直接取得します。
ブラウザを閉じた後、JESSIONID Cookieが消えました。再度アクセスすると、セッションを特定できなくなります。
セッションの永続化の方法:
1. セッションのJSESSIONIDをCookieに保存し、有効期間を設定することにより、次回のアクセスでサーバーに直接アクセスします。
つまり、セッションは長い間JSESSIONIDによって識別でき、次回セッションを作成する必要はありません。JSESSIONIDをCookieに保存することにより、会社は存続日を制御でき、次回の訪問時にCookieがサーバーに直接送られます。 JSESSIONIDを取得し、セッションオブジェクトを取得します。
ケースの実現:
WebServlet("/JSESSIONID_Cookie")
public class JSESSIONID_CookieServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//实现持久化session
HttpSession session = request.getSession();
//获取sessionid
String id = session.getId();
//这里注意,这个key一定要是JSESSIONID
Cookie cookie = new Cookie("JSESSIONID",id);
//设置cookie存活时间,将JSESSIONID存入cookie
cookie.setMaxAge(60*30);
//响应回浏览器
response.addCookie(cookie);
}
}
2. Tomcatでサービスを閉じると、セッションが自動的に永続化され(作業ディレクトリのsession.serに保存されます)、次回サーバーにアクセスしたときに、このファイルから直接読み取られます