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

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

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

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

1、驗(yàn)證用戶是否已經(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強(qiáng)轉(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", "請(qǐng)你先登錄");

      //重定向到登錄

      HttpServletResponse resp = (HttpServletResponse) response;

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

    }else{

      //放行

      chain.doFilter(request, response);

    }

  }

  public void destroy() {

  }

}

配置到web.xml中且對(duì)jsps/*進(jìn)行過慮:

<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、實(shí)現(xiàn)自動(dòng)登錄 

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

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

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

 Path        - 默認(rèn)值,即為當(dāng)前保存cookie的這個(gè)serlvet所在的路徑。

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

 則說明:

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

如果:

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

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

<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">不自動(dòng)登錄

      <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)點(diǎn)中任何一個(gè)頁面都應(yīng)該實(shí)現(xiàn)自動(dòng)登錄

寫一個(gè)過慮器,對(duì)所有url=/*進(jìn)行過慮。在doFilter中讀取所有cookie。是否存在名稱為autoLogin的名稱cookie。

永遠(yuǎn)都放行。

 

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")){//如果存在自動(dòng)登錄的cookie

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

         //登錄成功是指

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

         break;

       }

      }

    }

    //不管是否自動(dòng)登錄成

    chain.doFilter(request, response);

  }

第四涉:配置到web.xml中對(duì)所有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("用戶退出");

    //刪除整個(gè)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)化代碼

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

    所以應(yīng)該將LoginServet這個(gè)url在doFiler中不過過慮。

    且對(duì)退出也不能自動(dòng)登錄。

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

相關(guān)文章

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

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

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

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

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

    java tostring方法重寫代碼示例

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

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

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

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

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

    淺析MMAP零拷貝在RocketMQ中的運(yùn)用

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

    使用springboot單元測試對(duì)weblistener的加載測試

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

    淺析java快速排序算法

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

    java使用Filter實(shí)現(xiàn)自動(dòng)登錄的方法

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

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

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

最新評(píng)論

东宁县| 余姚市| 石狮市| 岱山县| 布拖县| 甘孜| 台州市| 芦溪县| 介休市| 闻喜县| 乌审旗| 涡阳县| 新余市| 鄂尔多斯市| 陵水| 贵德县| 冷水江市| 祁连县| 韶关市| 阜宁县| 鄂托克前旗| 普陀区| 黔南| 永川市| 社旗县| 福建省| 三河市| 慈利县| 辽中县| 焉耆| 黄石市| 灵丘县| 黔西县| 康平县| 宜宾县| 克什克腾旗| 盐山县| 长武县| 五寨县| 洛宁县| 伊通|