Java のセッション オブジェクトとメソッド インスタンスの分析

WBOY
リリース: 2023-05-13 22:01:04
転載
1259 人が閲覧しました

セッション オブジェクトは、各クライアントの動作状況を追跡するために、セッション スコープ内の各クライアントのアクセス ステータスを記録するために使用されます。セッションに格納されている情報は、ブラウザーがセッションを実行するときに、これらのセッションの有効なデータを取得できます。その後のリクエスト。

セッション オブジェクト (jsp の組み込みオブジェクト) を JSP ページで直接使用することも、pageContext.getSession() または request.getSession を通じてセッション オブジェクトを取得することもできます。

セッションではユーザー情報の保存やショッピングカートなどの機能を実装できます。

HTTP プロトコルはステートレス プロトコルです。クライアントはサーバーにリクエストを送信し、サーバーは応答を返します。接続は閉じられます。サーバーは接続に関する関連情報を保存しないため、次の接続、サーバーには以前の接続情報がなくなり、この接続に以前の接続と同じクライアント情報があるかどうかを判断できません。そのため、セッションを使用して接続に関する情報を記録する必要があります。

クライアントがサーバーに接続するためにブラウザを開いた瞬間から、クライアントがブラウザを閉じてサーバーを離れる瞬間まで、それはセッションと呼ばれます。クライアントがサーバーにアクセスするとき、サーバー上の複数のページに繰り返し接続したり、ページを繰り返し更新したり、ページに情報を継続的に送信したりすることがあります。サーバーは、これが同じクライアントであることを何らかの方法で認識する必要があります。その場合はセッションが必要になります。

セッションの動作原理は次のとおりです:

1. 顧客がサーバー上のページに初めてアクセスすると、サーバーはセッション オブジェクトをユーザーに割り当て、セッションの一意の ID を取得し、その ID をクライアントに送信して Cookie に書き込むことで、クライアントとサーバーのセッションが 1 対 1 の対応を確立します;

2. クライアントが引き続きサーバー上の他のリソースにアクセスすると、サーバーはアクセスできなくなります。 クライアントのブラウザが閉じられるか、タイムアウトになるか、セッションの validate() メソッドが呼び出されて無効化されるまで、新しいセッション オブジェクトがクライアントに割り当てられます。クライアントとサーバーは終了します。

3. 顧客がブラウザを再度開いて Web サイトにアクセスすると、サーバーはセッション オブジェクトを顧客に再割り当てし、セッション ID を再割り当てします。

session オブジェクトは主に属性操作とセッション管理に使用され、よく使用されるメソッドは次のとおりです:

1, public void setAttribute(String name,String value)Set指定された名前 属性の値をセッション スコープに追加します。この属性がセッション スコープ内に存在する場合は、属性の値を変更します。

2, public Object getAttribute(String name)セッションスコープ内の指定された名前の属性の値を取得します。戻り値の型はオブジェクトです。属性が存在しない場合は、 null が返されます。

3. public void RemoveAttribute(String name), 指定された名前のセッション属性を削除します。属性が存在しない場合は例外が発生します。

4, public void validate(), セッションを無効にします。現在のセッションはすぐに無効化され、元のセッションに保存されているすべてのオブジェクトにアクセスできなくなります。

5, public String getId( ), 現在のセッション ID を取得します。各セッションには、サーバー側に一意の識別子 sessionID があり、セッション オブジェクトによってブラウザに送信されるデータは sessionID だけであり、通常は cookie に保存されます。

6, public void setMaxInactiveInterval(int interval) セッションの最大継続時間を秒単位で設定します。負の数値は、セッションが期限切れにならないことを示します。

7, public int getMaxInActiveInterval(), セッションの最大継続時間を取得します。

8. セッション オブジェクトの getCreationTime() メソッドと getLastAccessedTime() メソッドを使用して、セッション作成時刻と最終アクセス時刻を取得しますが、戻り値はミリ秒です。通常、次の変換を使用する必要があります。特定の日付と時刻を取得します。

Date creationTime = new Date(session.getCreationTime());
Date accessedTime = new Date(session.getLastAccessedTime());
ログイン後にコピー
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
ログイン後にコピー
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>" rel="external nofollow" >   
    <title>session对象方法</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
 -->
  </head>
 
  <body>
    <b>
    会话ID:<%=session.getId() %> <br>
    是否新会话:<%=session.isNew() %><br>
    设置和获取属性对象:用户名 =
    <%session.setAttribute("用户名","bing"); %>
    <%=session.getAttribute("用户名") %><br>
    <%
    Date creationTime = new Date(session.getCreationTime());
    Date accessedTime = new Date(session.getLastAccessedTime());
     %>
     会话创建时间:<%=creationTime %><br>
     上次访问时间:<%=accessedTime %><br>
     会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
     <%session.setMaxInactiveInterval(12); %>
     修改后的会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
     <%session.invalidate(); %>
     </b>
  </body>
</html>
ログイン後にコピー

セッションを取得するためによく使用されるいくつかのメソッド

1.spring mvc

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
ログイン後にコピー

2.struts2

(1)

ActionContext context = ActionContext.getContext(); 
Map request = (Map) context.get("request"); 
Map session = context.getSession(); 
Map application = context.getApplication();
ログイン後にコピー

(2)

ActionContext actionContext = ActionContext.getContext(); 
HttpServletRequest request = (HttpServletRequest) actionContext
.get(ServletActionContext.HTTP_REQUEST); 
HttpSession session = request.getSession(); 
ServletContext context = (ServletContext) actionContext 
 .get(ServletActionContext.SERVLET_CONTEXT);
ログイン後にコピー

3. ServletActionContext を通じて

HttpServletRequest request = ServletActionContext.getRequest(); 
HttpSession session = request.getSession();
ログイン後にコピー
を取得する

以上がJava のセッション オブジェクトとメソッド インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート