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

Java Web實現(xiàn)自動登陸功能

 更新時間:2021年08月15日 10:25:39   作者:Lukegwo  
這篇文章主要為大家詳細(xì)介紹了Java Web實現(xiàn)自動登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Java對自動登陸功能的簡單實現(xiàn),僅用到了servlet和一個filter。第一次寫博文,如有不足的地方,敬請指正,謝謝。

登陸界面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 <title>登陸頁面</title>
  </head>
  <body>
     <form action="<%=request.getContextPath()%>/LoginAction" method="post">
      用戶名:<input type=“text” name="name" > <br>
      密    碼:<input type=“password” name="passwd" > <br>
     保存時間<select name="savetime">
      <option value="7">一    周</option>
      <option value="30">一個月</option>
     </select><br>
      <input type="submit" value="登陸">
    </form>
  </body>
</html>

填寫完用戶名和密碼后選擇保存時間。這里就沒有設(shè)置不保存選項,默認(rèn)保存時間是一周。

LoginBiz類,負(fù)責(zé)校驗用戶輸入的用戶名和密碼是否正確。

package com.autologin;
 
public class LoginBiz  {
  static  boolean isValid(String name,String passwd){
  if(name.equals("admin")&&passwd.equals("1234")){
   return true;
  }else{
   return false;
  }
 }
}

本類為LoginAction提供服務(wù),相當(dāng)于Biz層。

LoginAction類,負(fù)責(zé)頁面跳轉(zhuǎn)。

package com.autologin;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class LoginAction extends HttpServlet {
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String name=request.getParameter("name");
  String passwd=request.getParameter("passwd");
  String savetimeString=request.getParameter("savetime");
  
  if(new LoginBiz().isValid(name, passwd)){
   int savetime=Integer.parseInt(savetimeString)*24*3600;
   Cookie loginInfo=new Cookie("loginInfo",name+","+passwd);
   loginInfo.setMaxAge(savetime);
   response.addCookie(loginInfo);
   response.sendRedirect("/TestWeb/success.jsp");
  }else{
   response.sendRedirect("/TestWeb/error.jsp");
  }
 }
 
}

用戶第一次登陸時會調(diào)用此servlet來驗證用戶信息和設(shè)置cookie。根據(jù)登陸時的設(shè)置的時間計算出秒數(shù),然后把保存有用戶名和密碼的Cookie(loginInfo)add到客戶端。為了方便用戶名和密碼設(shè)置在了一個cookie中,用","隔開。(真正項目中,當(dāng)然要給密碼做加密處理。)

如果第一次成功登陸,再次請求login.jsp時即可直接跳轉(zhuǎn)到success頁面,無需再次輸入用戶名和密碼,這里就用到了下面這個Filter。

CheckFilter類

package com.autologin;
 
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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class CheckFilter implements Filter {
 
 public void destroy() {
  
 }
 
 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  HttpServletRequest request=(HttpServletRequest)arg0;
  HttpServletResponse response=(HttpServletResponse)arg1;
  Cookie[] cookies=request.getCookies();
  String name = "";
  String passwd = "";
  if(cookies!=null){
   for(Cookie coo:cookies){
    if(coo.getName().equals("loginInfo")){
     String[] info=coo.getValue().split(",");
     name=info[0];
     passwd=info[1];
    }
   }
  }
  //如果在cookie中得到保存的用戶名和密碼,驗證正確后,直接轉(zhuǎn)到success頁
  if(new LoginBiz().isValid(name, passwd)){
   response.sendRedirect("/TestWeb/success.jsp");
  }else{
   arg2.doFilter(request, response);
  }
 
 }
 public void init(FilterConfig arg0) throws ServletException {
  
 } 
 
}

當(dāng)用戶請求login.jsp頁面時,首先會通過此Filter,這時會嘗試從請求信息的Cookie中得到用戶名和密碼,如果是第一次登陸沒有設(shè)置過Cookie,那么會把登陸請求交給LoginAction處理。如果之前成功登陸過,就已保存有Cookie,獲取到正確的用戶名和密碼并驗證成功(安全起見,這里再次驗證)后直接跳轉(zhuǎn)到success頁面,此時就不經(jīng)過LoginAction了。
配置文件如下:

<servlet>
    <servlet-name>LoginAction</servlet-name>
    <servlet-class>com.autologin.LoginAction</servlet-class>
  </servlet>
  <filter>
   <filter-name>CheckFilter</filter-name>
   <filter-class>com.autologin.CheckFilter</filter-class>
  </filter>
 
  <servlet-mapping>
    <servlet-name>LoginAction</servlet-name>
    <url-pattern>/LoginAction</url-pattern>
  </servlet-mapping> 
  <filter-mapping>
   <filter-name>CheckFilter</filter-name>
   <url-pattern>/login.jsp</url-pattern>
</filter-mapping>

第一次登陸成功后,chrome保存的Cookie信息

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

相關(guān)文章

  • 詳解在spring boot中配置多個DispatcherServlet

    詳解在spring boot中配置多個DispatcherServlet

    本篇文章主要介紹了詳解在spring boot中配置多個DispatcherServlet,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • 啟動SpringBoot報錯Input length = 1問題及解決

    啟動SpringBoot報錯Input length = 1問題及解決

    這篇文章主要介紹了啟動SpringBoot報錯Input length = 1問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解Java設(shè)計模式編程中的訪問者模式

    詳解Java設(shè)計模式編程中的訪問者模式

    這篇文章主要介紹了Java設(shè)計模式編程中的訪問者模式,訪問者模式的合理利用可以避免項目中出現(xiàn)大量重復(fù)的代碼,需要的朋友可以參考下
    2016-02-02
  • SpringMVC工作原理實例詳解

    SpringMVC工作原理實例詳解

    這篇文章主要介紹了SpringMVC工作原理實例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • JAVA數(shù)字千分位和小數(shù)點的現(xiàn)實代碼(處理金額問題)

    JAVA數(shù)字千分位和小數(shù)點的現(xiàn)實代碼(處理金額問題)

    這篇文章主要介紹了JAVA數(shù)字千分位和小數(shù)點的現(xiàn)實代碼(處理金額問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Springboot訪問html頁面的教程詳解

    Springboot訪問html頁面的教程詳解

    這篇文章主要介紹了Springboot訪問html頁面的教程,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-03-03
  • IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法

    IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中顯示和關(guān)閉工具欄與目錄欄的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • SpringBoot配置系統(tǒng)全局異常映射處理

    SpringBoot配置系統(tǒng)全局異常映射處理

    在項目開發(fā)中,肯定少不了異常的出現(xiàn),作為后臺開發(fā)人員,我們總是在不停的寫各種接口提供給前端調(diào)用,然而不可避免的,當(dāng)后臺出現(xiàn)BUG時,前端總是丑陋的講錯誤信息直接暴露給用戶,這樣的用戶體驗想必是相當(dāng)差的,本文主要講解異常映射的配置
    2021-06-06
  • SpringBoot操作Redis三種方案全解析

    SpringBoot操作Redis三種方案全解析

    這篇文章主要介紹了SpringBoot操作Redis三種方案全解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • springboot實現(xiàn)防重復(fù)提交和防重復(fù)點擊的示例

    springboot實現(xiàn)防重復(fù)提交和防重復(fù)點擊的示例

    這篇文章主要介紹了springboot實現(xiàn)防重復(fù)提交和防重復(fù)點擊的示例,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下
    2020-09-09

最新評論

姜堰市| 通化市| 正镶白旗| 博乐市| 红安县| 巩留县| 遵化市| 准格尔旗| 永仁县| 名山县| 汉寿县| 常山县| 呼玛县| 安康市| 桑植县| 宜阳县| 交城县| 宜章县| 阳曲县| 兴义市| 突泉县| 大方县| 安吉县| 华蓥市| 扶风县| 普定县| 樟树市| 突泉县| 北安市| 沁阳市| 绥芬河市| 定远县| 象州县| 垣曲县| 长治市| 海阳市| 黑水县| 天峨县| 赤城县| 台中县| 汉沽区|