session学習を作成する-request.get Session()

4194 ワード

転載元:http://hi.baidu.com/chentjj
HttpServletでは、HttpSessionオブジェクトは、通常、request.get Session(true)メソッド呼び出し時に作成される.HttpSessionの使用はコストがあります.サーバーの資源を占用する必要があります.無駄なく浪費しないという原則に基づいて、システムの中のsessionを全部掌握してほしいです.作成が必要な時に私達のコードで明確に作成します.しかし、最近開発中に新たなパートナーが予想外によく現れることが分かりました.いったい誰がセッションを作っているのですか?最も一般的なところは、エラーの使用request.get Session()関数であり、通常はactionで、ある変数/タグがsessionに保存されているかどうかをチェックする.このシーンでsessionが存在しない場合がありますが、正常な判断はこうです.
 
1private  boolean  ifFlagExistInSession(HttpServletRequest request) {
     HttpSession session = request.getSession(
false);
    
if  (session != null) {
        
if  (session.getAttribute("flagName")   != null) {
            
return  true;
         }
     }
   
return  false;
}
次のような書き方をすると、私たちの意図以外の新しいセッションが生まれるかもしれません.
1private  boolean  ifFlagExistInSession(HttpServletRequest request) {
      HttpSession session = request.getSession();  
// a new session created if no session exists
      if (session.getAttribute("flagName")   != null) {
         return true;
       }
     return false;
}
注意request.gets Session()はrequest.get Session(true)に相当します.sessionが必ず存在するかまたはsessonが存在しないかを確認した時にsessionを作成する必要があると明確にしない限り、request.get Session(false)を使用してください.
FeedBack:葃:誰がsessionを作成していますか?(1)-不適切なrequest.get Session()2007-12-19
一般的には(一部のservlet実装はそうではないかもしれませんが)、デフォルトのアクセスユーザは初めてjspページでsessionを作成します.jspでコマンドsessionはtrueに設定されています.つまり、コンパイルされたjavaファイルは_uにあります.jspService()方法にはコードライン(Tomcatはこのような)session=pageConttext.get Session()があります.設定を表示しない限り、自分でget Session(true)またはget Session()を作成する際にsessionを作成するのは、リソースを消費しないだけです.空のmapです.特にクラスタ環境下では、同じステップの負担がかかります.
Success時、 
1//Struts Bean session   
String login_name = rs.getString("true_name");  
// session  
HttpSession session = request.getSession();  
// truename login_name session   
session.setAttribute("truename", login_name); 
Falseの時、
LoginFalse.login False(request)  
LoginnFalse類の中のロシアの静的な方法を呼び出しました.もちろん自分で書いたのです.最近はわざとすべてのものをパッケージに入れる習慣を身につけました.いい感じです.LoginnFalseのコードは、
1
2
3
4
5public  static  void  loginFalse(HttpServletRequest request) {     String login_false = "Your username or password is wrong!!!";        HttpSession session = request.getSession();     session.setAttribute("loginfalse", login_false);login.jspのコードで、
1
2
3
4
5
6
7
8 "loginfalse");   if  (loginwrong != null) { %>      // session   session.removeAttribute("loginfalse");   }session.removeAttribute("truename"); %>  
ページはユーザーのtrue_を する があります.nameおよびlogout が されます.  logout.incコード、
1 "truename");%>  

  
if  (u == null) {%>  
"g_login"/>  
  
"/login.jsp">logout 
またLogin Formの のnot required は されました.  の はStrutsの のscope sessionを らないと、Beanの で かがsessionを かない 、strutsは でget Sessionをあげます.  また、 のJSPでのセッションとはちょっと っています.
Http Session session=request.get Session()  
session.set Attributeの にこの を くことに しなければなりません.