最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java驗證用戶是否已經(jīng)登錄 java實現(xiàn)自動登錄

 更新時間:2016年04月17日 11:48:51   投稿:lijiao  
這篇文章主要介紹了java驗證用戶是否已經(jīng)登錄,java實現(xiàn)自動登錄,感興趣的小伙伴們可以參考一下

本文為大家分享了java驗證用戶是否已經(jīng)登錄與實現(xiàn)自動登錄的詳細代碼,供大家參考,具體內(nèi)容如下

1、驗證用戶是否已經(jīng)登錄

package cn.hongxin.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

public class LoginFilter implements Filter{

  public void init(FilterConfig filterConfig) throws ServletException {

  }

  public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    //將request強轉(zhuǎn)成htt...

    HttpServletRequest req = (HttpServletRequest) request;

    //獲取session

    HttpSession ss = req.getSession();

    //從session中獲取user

    if(ss.getAttribute("user")==null){

      System.err.println("你還沒有登錄");

      req.getSession().setAttribute("msg", "請你先登錄");

      //重定向到登錄

      HttpServletResponse resp = (HttpServletResponse) response;

      resp.sendRedirect(req.getContextPath()+"/index.jsp");[W2] 

    }else{

      //放行

      chain.doFilter(request, response);

    }

  }

  public void destroy() {

  }

}

配置到web.xml中且對jsps/*進行過慮:

<filter>

  <filter-name>login</filter-name>

  <filter-class>cn.itcast.filter.LoginFilter</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>login</filter-name>

  <url-pattern>/jsps/*</url-pattern>

  <url-pattern>/views/*</url-pattern>

 </filter-mapping>

2、實現(xiàn)自動登錄 

自動登錄,是為了幫助用戶多次使用這個網(wǎng)頁時,不用再次輸入用戶名和密碼就可以登錄。

是指用戶將用戶的登錄信息,人,保存到本地的文件中Cookie中。

 Name,value – 聲明時 new Cookie(key,value);

 Path        - 默認值,即為當前保存cookie的這個serlvet所在的路徑。

如果Cookie在這樣的路徑:http://loclhost:8080/project/abc/AServlet,則Cookie的路徑為: http://loclhost/project/abc

 則說明:

所在在http://loclhost/project/abc目錄下的servlet才可以讀取這個cookie的值。

如果:

保存Cookie類:http://loclhost:8080/project/a/b/AServlet,則Cookie的默認path為;http://loclhost/project/a/b

第一步:開發(fā)一個登錄頁面

<c:choose>

  <c:when test="${empty sessionScope.name}">

    <form name="x" method="post" action="<c:url value='/LoginServlet'/>">

      Name:<input type="text" name="name"/><br/>

      auto:

      <input type="radio" name="auto" value="-1">不自動登錄

      <br/>

      <input type="radio" name="auto" value="1">1天<br/>

      <input type="radio" name="auto" value="7">1周<br/>

      <input type="submit"/>

    </form>

  </c:when>

  <c:otherwise>

    你已經(jīng)登錄了:${name}<br/>

    <a href="<c:url value='/LoginServlet'/>">退出</a>

  </c:otherwise>

</c:choose>

第二步:成功保存cookie

  public void doPost(HttpServletRequest request, HttpServletResponse response)

      throws ServletException, IOException {

    //接收用戶姓名

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

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

    //將用戶信息放到session

    request.getSession().setAttribute("name",name);

    //判斷auto是否是-1

    if(!auto.equals("-1")){

      int day = Integer.parseInt(auto);//1|7

      int seconds = 60*60*24*day;

      //聲明cookie

      Cookie c = new Cookie("autoLogin",name);

      c.setMaxAge(seconds);

      c.setPath(request.getContextPath());

      //保存cookie

      response.addCookie(c);

     

    }

  }

 

第三步:要求訪問本網(wǎng)點中任何一個頁面都應該實現(xiàn)自動登錄

寫一個過慮器,對所有url=/*進行過慮。在doFilter中讀取所有cookie。是否存在名稱為autoLogin的名稱cookie。

永遠都放行。

 

public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    //在這兒讀取cookie

    HttpServletRequest req = (HttpServletRequest) request;

    //獲取所的有cookie

    Cookie[] cs = req.getCookies();

    if(cs!=null){

      for(Cookie c:cs){

       if(c.getName().equals("autoLogin")){//如果存在自動登錄的cookie

         String value = c.getValue();//用戶名稱

         //登錄成功是指

         req.getSession().setAttribute("name", value);

         break;

       }

      }

    }

    //不管是否自動登錄成

    chain.doFilter(request, response);

  }

第四涉:配置到web.xml中對所有url=/*

<filter>

  <filter-name>auto</filter-name>

  <filter-class>cn.itcast.filter.AutoFilter</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>auto</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

 第五步:開發(fā)退出

System.err.println("用戶退出");

    //刪除整個session

    request.getSession().invalidate();

    Cookie c = new Cookie("autoLogin", "ddd");

    c.setMaxAge(0);

    c.setPath(request.getContextPath());

    response.addCookie(c);

//   request.getSession().removeAttribute("name");

    response.sendRedirect(request.getContextPath()+"/index.jsp");

第六步:優(yōu)化代碼

    由于用戶在做手工登錄時,也會進入AutoFiilter的doFilter方法,且讀取所有Cookie遍歷一次。而這次遍歷對用戶來說是多余。

    所以應該將LoginServet這個url在doFiler中不過過慮。

    且對退出也不能自動登錄。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助。

相關(guān)文章

  • Java集合的總體框架相關(guān)知識總結(jié)

    Java集合的總體框架相關(guān)知識總結(jié)

    今天帶大家學習Java集合框架的相關(guān)知識,文中有非常詳細的圖文介紹,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java基本數(shù)據(jù)類型族譜與易錯點梳理解析

    Java基本數(shù)據(jù)類型族譜與易錯點梳理解析

    Java有八大基本類型,很多同學只對經(jīng)常使用的int類型比較了解。有的同學是剛從C語言轉(zhuǎn)入Java學習,誤以為兩者的基本數(shù)據(jù)類型完全相同,這也是大錯特錯的。今天這本Java基本數(shù)據(jù)類型全解析大字典,可以幫助你直接通過目錄找到你想要了解某一種基本數(shù)據(jù)類型
    2022-01-01
  • java tostring方法重寫代碼示例

    java tostring方法重寫代碼示例

    這篇文章主要介紹了java tostring方法重寫代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • 流式圖表拒絕增刪改查之kafka核心消費邏輯上篇

    流式圖表拒絕增刪改查之kafka核心消費邏輯上篇

    這篇文章主要為大家介紹了流式圖表拒絕增刪改查之kafka核心消費邏輯詳解的上篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Java語言之LinkedList和鏈表的實現(xiàn)方法

    Java語言之LinkedList和鏈表的實現(xiàn)方法

    LinkedList是由傳統(tǒng)的鏈表數(shù)據(jù)結(jié)構(gòu)演變而來的,鏈表是一種基本的數(shù)據(jù)結(jié)構(gòu),它可以動態(tài)地增加或刪除元素,下面這篇文章主要給大家介紹了關(guān)于Java語言之LinkedList和鏈表的實現(xiàn)方法,需要的朋友可以參考下
    2023-05-05
  • 淺析MMAP零拷貝在RocketMQ中的運用

    淺析MMAP零拷貝在RocketMQ中的運用

    零拷貝技術(shù)可以減少數(shù)據(jù)拷貝和共享總線操作的次數(shù),消除傳輸數(shù)據(jù)在存儲器之間不必要的中間拷貝次數(shù),從而有效地提高數(shù)據(jù)傳輸效率,這篇文章主要介紹了MMAP零拷貝在RocketMQ中的運用,需要的朋友可以參考下
    2022-07-07
  • 使用springboot單元測試對weblistener的加載測試

    使用springboot單元測試對weblistener的加載測試

    這篇文章主要介紹了使用springboot單元測試對weblistener的加載測試,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 淺析java快速排序算法

    淺析java快速排序算法

    這篇文章主要介紹了淺析java快速排序算法,需要的朋友可以參考下
    2015-02-02
  • java使用Filter實現(xiàn)自動登錄的方法

    java使用Filter實現(xiàn)自動登錄的方法

    這篇文章主要為大家詳細介紹了java使用Filter實現(xiàn)自動登錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java非遞歸實現(xiàn)刪除任意目錄的方法

    Java非遞歸實現(xiàn)刪除任意目錄的方法

    這篇文章主要為大家詳細介紹了Java非遞歸實現(xiàn)刪除任意目錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論

迭部县| 民乐县| 剑阁县| 平潭县| 司法| 仲巴县| 德惠市| 太谷县| 宝山区| 开原市| 普洱| 永靖县| 罗江县| 邳州市| 伊吾县| 桂东县| 阿拉善左旗| 宜宾县| 邯郸市| 肥东县| 惠水县| 溧阳市| 青冈县| 东安县| 宜兴市| 曲麻莱县| 鹰潭市| 黑水县| 尉氏县| 长乐市| 理塘县| 栾城县| 临漳县| 福安市| 昆山市| 丹寨县| 海林市| 射阳县| 陆河县| 康保县| 吉林市|