e寒-modify

          e寒-modify

          統計

          最新評論

          同一帳號異地登錄

          在此之前也看了很多同一帳號異地登錄的,有的是采用后登錄者必須等待前登錄者釋放后才可以登錄,我的項目中要用到想qq那樣可以踢出,我具體的做法如下:

          LoginServelt.java 做登錄使用

          OnlineUserListener.java 做session超時清理工作

          LogValidata.java 做權限驗證

          logout.jsp做退出

          LoginServelt.java public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

          HttpSession session=request.getSession();

          String username=request.getParameter("username");

          String password=request.getParameter("password");

          ServletContext sc=this.getServletContext();

          String sessionId=session.getId();

          String path= request.getContextPath();

          Map<String, String> onlineUserMap=(Map<String, String>)sc.getAttribute("onlineUserMap");

          //如果是首個用戶登錄,onlineUserMap為空,new一個

          if(onlineUserMap==null){

          onlineUserMap=new HashMap<String, String>();

          }

          if(username!=null || password!=null){

          onlineUserMap.put(username.trim(), sessionId);

          sc.setAttribute("onlineUserMap",onlineUserMap);

          //設置username,因為這個唯一的,作為key

          session.setAttribute("username", username);

          response.sendRedirect(path+"/success.jsp");

          }else{

          response.sendRedirect(path+"/index.jsp");

          }

          }

          OnlineUserListener.java

          public class OnlineUserListener implements HttpSessionListener {

          public void sessionCreated(HttpSessionEvent event) {

          }

          public void sessionDestroyed(HttpSessionEvent event) {

          HttpSession session = event.getSession();

          Map<String, String> onlineUserMap=(Map<String, String>)session.getServletContext().getAttribute("onlineUserMap");

          if(onlineUserMap!=null){

          onlineUserMap.remove(session.getId());

          session.getServletContext().setAttribute("onlineUserMap", onlineUserMap);

          }

          }

          }

          LogValidata.java

          public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

          HttpServletRequest request=(HttpServletRequest)arg0;

          HttpServletResponse response=(HttpServletResponse)arg1;

          ServletContext sc=request.getSession().getServletContext();

          String username=(String)request.getSession().getAttribute("username"); Map onlineUserMap=(Map) sc.getAttribute("onlineUserMap");

          String sessionId=request.getSession().getId();

          String path= request.getContextPath();

          //onlineUserMap==null 說明還沒有用戶登錄過

          //username==null 說明該用戶超時或未登錄

          if(onlineUserMap!=null && username!=null ){

          //獲取sessionId String id=(String) onlineUserMap.get(username);

          if(id!=null && id.trim().equals(sessionId)){

          //取得sessionId與當前相等,說明此用戶在使用狀態 arg2.doFilter(request,response);

          }else{

          //說明已經被提出

          response.setCharacterEncoding("gb2312");

          response.setContentType("text/html");

          PrintWriter out = response.getWriter();

          out.println("");

          out.flush();

          out.close();

          } }else{

          //說明未登錄

          response.setCharacterEncoding("gb2312");

          response.setContentType("text/html");

          PrintWriter out = response.getWriter();

          out.println("");

          out.flush();

          out.close();

          }

          }

          logout.jsp

          <body>
             <%
              String username=(String)request.getSession().getAttribute("username");
              Map onlineUserMap=(Map) application.getAttribute("onlineUserMap");
              if(onlineUserMap!=null && username!=null){
                 onlineUserMap.remove(username);
              }
              session.invalidate();
              %>
          <SCRIPT language="javascript">
          location.href="login.jsp";
          </SCRIPT>
          </body>

          posted on 2009-06-10 23:40 e寒-modify 閱讀(298) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临湘市| 扎赉特旗| 清涧县| 定陶县| 登封市| 莆田市| 普洱| 噶尔县| 龙岩市| 山东| 高安市| 金川县| 莲花县| 台山市| 乃东县| 都兰县| 阜城县| 衢州市| 江津市| 深水埗区| 承德市| 苗栗市| 图木舒克市| 治多县| 贡嘎县| 辉县市| 彭泽县| 扶余县| 石狮市| 托里县| 新和县| 泸溪县| 左权县| 夏河县| 柳江县| 专栏| 衡东县| 昌江| 东台市| 西畴县| 五寨县|