posts - 25, comments - 11, trackbacks - 0, articles - 37

           * 在JavaWeb中使用HttpSession(以下簡(jiǎn)稱session)對(duì)象來(lái)表示一個(gè)會(huì)話。 

          * Session的創(chuàng)建(代表會(huì)話周期的開(kāi)始):第一次調(diào)用request.getSession()方法時(shí),會(huì)創(chuàng)建一個(gè)session對(duì)象。

           * Session的銷毀(代表會(huì)話周期的結(jié)束):在某個(gè)請(qǐng)求周期內(nèi)調(diào)用了Session.invalidate()方法,此請(qǐng)求周期結(jié)束后,session被銷毀;或者是session超時(shí)后自動(dòng)銷毀。

           * 對(duì)于JSP,如果指定了<%@ page session="false"%>,則在JSP中無(wú)法直接訪問(wèn)內(nèi)置的session變量,同時(shí)也不會(huì)主動(dòng)創(chuàng)建session,因?yàn)榇藭r(shí)JSP未自動(dòng)執(zhí)行request.getSession()操作獲取session。

           * 在session對(duì)象剛創(chuàng)建的第一個(gè)請(qǐng)求周期內(nèi),調(diào)用session.isNew()方法將得到true。

          1.有效期設(shè)置

           * 可以在web.xml文件中配置session默認(rèn)的超時(shí)時(shí)間(分鐘):      <session-config>          <session-timeout>10</session-timeout>      </session-config>      也可以調(diào)用session. setMaxInactiveInterval()方法設(shè)置session超時(shí)時(shí)間(分鐘)

          2.監(jiān)控  

          * 通過(guò)SessionListenr可以監(jiān)聽(tīng)session的創(chuàng)建和銷毀,步驟:     

          1.寫(xiě)一個(gè)類MySessionListener,實(shí)現(xiàn)javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法     

           2.在web.xml中配置SessionListener:     

          <listener>         

          <listener-class>MySessionListener類全名</listener-class>     

          </listener>   

          * 當(dāng)session 被創(chuàng)建和銷毀時(shí),容器會(huì)分別調(diào)用SessionListener的sessionCreated()方法和sessionDestroyed()方法,這兩個(gè)方法中傳入了一個(gè)參數(shù)對(duì)象HttpSessionEvent,可以通過(guò)此對(duì)象的getSession()方法獲取session對(duì)象。

           應(yīng)用示例:在線人數(shù)統(tǒng)計(jì)

          import java.util.HashSet;

          import javax.servlet.ServletContext;

          import javax.servlet.http.HttpSession;

          import javax.servlet.http.HttpSessionEvent;

          import javax.servlet.http.HttpSessionListener; 

          public class MySessionListener implements HttpSessionListener {       

           public void sessionCreated(HttpSessionEvent event) {             

           HttpSession session = event.getSession();             

          ServletContext application = session.getServletContext();                           

           // 在application范圍由一個(gè)HashSet集保存所有的session             

           HashSet sessions = (HashSet) application.getAttribute("sessions");             

          if (sessions == null) {                    

          sessions = new HashSet();                    

          application.setAttribute("sessions", sessions);             

          }                           

          // 新創(chuàng)建的session均添加到HashSet集中             

           sessions.add(session);             

          // 可以在別處從application范圍中取出sessions集合             

          // 然后使用sessions.size()獲取當(dāng)前活動(dòng)的session數(shù),即為“在線人數(shù)”      

          }       

          public void sessionDestroyed(HttpSessionEvent event) {             

          HttpSession session = event.getSession();             

           ServletContext application = session.getServletContext();             

           HashSet sessions = (HashSet) application.getAttribute("sessions");                           

           // 銷毀的session均從HashSet集中移除             

          sessions.remove(session);      

          }

          }

          Feedback

          # re: jsp中Session的有效期設(shè)置、監(jiān)控怎么實(shí)現(xiàn)?[未登錄](méi)  回復(fù)  更多評(píng)論   

          2016-05-18 15:35 by 123
          swer

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 通化市| 金堂县| 泸州市| 万全县| 阳泉市| 高邑县| 台东市| 孝感市| 潮安县| 山东| 西林县| 扎兰屯市| 南和县| 临高县| 丰原市| 济源市| 绵竹市| 交城县| 庆元县| 漳平市| 郸城县| 桑植县| 宜昌市| 东乌珠穆沁旗| 宜兴市| 盈江县| 土默特右旗| 绿春县| 山阴县| 邢台县| 板桥市| 阳春市| 六安市| 乌兰察布市| 寻甸| 武汉市| 芒康县| 晋宁县| 长治市| 明水县| 延川县|