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

JavaWeb基于Session實現(xiàn)的用戶登陸注銷方法示例

 更新時間:2017年12月03日 17:06:02   投稿:daisy  
為了安全起見,session常常用來保存用戶的登錄信息。那么服務(wù)器是怎么來實現(xiàn)的呢?下面這篇文章就來給大家介紹了關(guān)于JavaWeb基于Session實現(xiàn)的用戶登陸注銷的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。

前言

Cookie:cookie是客戶端技術(shù),程序把每個用戶的數(shù)據(jù)以cookie的形式寫給用戶各自的瀏覽器。

當用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)區(qū),這樣,web資源處理的就是各自的數(shù)據(jù)了。

Session:session是服務(wù)器端技術(shù),利用session技術(shù),服務(wù)器在運行時可以為每一個用戶的瀏覽器創(chuàng)建其獨享的session對象,由于session為用戶瀏覽器獨享,所以用戶在訪問服務(wù)器的web資源時,可以把各自的數(shù)據(jù)放在session中,當用戶再次去訪問服務(wù)器中的其他web資源時,其他web資源再從用戶各自的session
取出數(shù)據(jù)為用戶服務(wù)。

Session和Cookie的主要區(qū)別:

  • Cookie是把用戶的數(shù)據(jù)寫給用戶的瀏覽器
  • Session技術(shù)把用戶的數(shù)據(jù)寫到用戶獨占的session中。
  • Session對象由服務(wù)器創(chuàng)建,開發(fā)人員可以調(diào)用request對象的getSession方法得到session對象。

我們常常通過Session來存儲用戶的部分登陸信息來驗證用戶是否在線,這應(yīng)該時最容易實現(xiàn)的一種Web端方案,本文以SSM(Spring、SpringMVC、myBatis)框架為載體,來具體實現(xiàn)這套登陸系統(tǒng)。

方法如下:

1.通過前端傳遞用戶名密碼到后端接口,接口拿到值后,對其進行 MD5 加密,與數(shù)據(jù)庫中的字段進行比較,返回狀態(tài)給前端,前端根據(jù)返回值進行頁面跳轉(zhuǎn)。

MD5加密工具類

public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
    //確定計算方法
    MessageDigest md5=MessageDigest.getInstance("MD5");
    BASE64Encoder base64en = new BASE64Encoder();
    //加密后的字符串
    String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
    return newstr;
  }

DAO層以及Mapper

<select id="valiteUser" parameterType="java.lang.String" resultType="com.heitian.ssm.model.Userinfo">
    SELECT password FROM t_user
    WHERE username = #{username}
</select>

Service層實現(xiàn)類

public String valiteUser(Userinfo userinfo) {
    try{
      Userinfo userdemo=userDao.valiteUser(EncoderByMd5(userinfo.getUsername()));
      if(userinfo.getPassword().equals(userdemo.getPassword())){
        return "pass";
      }
    }catch (Exception e){
      e.printStackTrace();
      return "error";
    }
    return "refuse";
  }

Controller層

  @ResponseBody
  @RequestMapping("/loginUser")
  public HashMap<String,Object> loginUser(HttpServletRequest request, Userinfo userinfo){
    HashMap<String,Object> result=new HashMap<String, Object>();
    HttpSession session = request.getSession();
    System.out.println("login fail");
    String status=userService.valiteUser(userinfo);
    if(status.equals("pass")){
      session.setAttribute("CURRENT_USER",userinfo.getUsername());
      result.put("status","pass");
    }else{
      if(status.equals("refuse")){
        result.put("status","refuse");
      }else {
        result.put("status","error");
      }
    }
    return result;
  }

通過返回status信息,來判斷登陸是否成功,如果成功則將Session中寫入用戶名鍵值對。

2.當其他頁面訪問時,如何判斷是否有用戶登陸在線呢,我通過JS來取Session值來判斷。

即:先去拿Session的值,如果拿到為空或為null,則說明此會話在此之前沒有登陸行為,我們自動將其重定向到首頁,如果有值,則說明有登陸行為,且登陸在線的用戶為CURRENT_USER

所取出來的值,這時我們在用用戶名去調(diào)后臺接口即可。

<script language="JavaScript">
  $(document).ready(function(){
      var myName="<%=session.getAttribute("CURRENT_USER")%>";
      var projiectid1= "<%=request.getAttribute("projectid")%>";
      if(myName=="null"){
        window.location.href="/page/toindex" rel="external nofollow" ;
      }
</script>

3.用戶注銷

注銷,即清除Session中的值即可,由后臺開放一個注銷接口。

@RequestMapping("/quitUser")
  public String quitUser(HttpServletRequest request){
    HttpSession session = request.getSession();
    session.removeAttribute("CURRENT_USER");
    return "index";
  } 

這樣就實現(xiàn)了一套從登陸到注銷的用戶管理體系,但是這是一種最基礎(chǔ)的體系,安全性由很大的問題,所以類似于JWT TOKEN之類的驗證方案還是很有用武之地的。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 在SpringBoot框架中實現(xiàn)打印響應(yīng)的日志

    在SpringBoot框架中實現(xiàn)打印響應(yīng)的日志

    這篇文章主要介紹了在SpringBoot框架中實現(xiàn)打印響應(yīng)的日志,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中對象都是分配在堆上嗎?你錯了!

    Java中對象都是分配在堆上嗎?你錯了!

    這篇文章主要介紹了Java中對象都是分配在堆上嗎?你錯了!文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • javax.persistence中@Column定義字段類型方式

    javax.persistence中@Column定義字段類型方式

    這篇文章主要介紹了javax.persistence中@Column定義字段類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 使用Java實現(xiàn)查看線程的運行狀態(tài)(附源碼)

    使用Java實現(xiàn)查看線程的運行狀態(tài)(附源碼)

    在現(xiàn)代 Java 應(yīng)用中,線程的運行狀態(tài)對于排查問題和優(yōu)化性能具有至關(guān)重要的作用,本文將使用Java編寫一個查看線程運行狀態(tài)的工具,有需要的可以了解下
    2025-03-03
  • Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    多數(shù)據(jù)源管理是Spring框架中非常重要的一部分,它可以提高應(yīng)用程序的靈活性和可靠性,從而更好地滿足業(yè)務(wù)需求,這篇文章主要介紹了Spring?多數(shù)據(jù)源方法級別注解實現(xiàn),需要的朋友可以參考下
    2023-07-07
  • 使用feign發(fā)送http請求解析報錯的問題

    使用feign發(fā)送http請求解析報錯的問題

    這篇文章主要介紹了使用feign發(fā)送http請求解析報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決

    MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決

    這篇文章主要介紹了MyBatis查詢數(shù)據(jù),賦值給List集合時,數(shù)據(jù)缺少的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Boot 對接深度求索接口實現(xiàn)知識問答功能

    Spring Boot 對接深度求索接口實現(xiàn)知識問答功能

    本文詳細介紹了如何使用 Spring Boot 對接深度求索接口,實現(xiàn)知識問答功能,通過整合深度求索 API,我們可以輕松地在 Spring Boot 項目中實現(xiàn)智能問答功能,
    2025-02-02
  • IDEA下使用Spring Boot熱加載的實現(xiàn)

    IDEA下使用Spring Boot熱加載的實現(xiàn)

    本文主要介紹了IDEA下使用Spring Boot熱加載的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java8新特性:lambda表達式總結(jié)

    Java8新特性:lambda表達式總結(jié)

    這篇文章主要介紹了Java8新特性:lambda表達式總結(jié),本文總結(jié)了多種語法格式和使用方法,包含了函數(shù)式接口和內(nèi)置的四大核心函數(shù)式接口的用法實例,需要的朋友可以參考下
    2021-06-06

最新評論

白朗县| 曲阜市| 靖边县| 镇雄县| 保德县| 渝中区| 英德市| 湾仔区| 兴化市| 麻城市| 贺兰县| 宝应县| 灌云县| 樟树市| 乌兰浩特市| 绥棱县| 济南市| 莱芜市| 兖州市| 阿拉尔市| 郴州市| 龙岩市| 高要市| 汝城县| 丹江口市| 色达县| 墨江| 永平县| 兴国县| 荆州市| 晋州市| 潮安县| 岳阳市| 舟曲县| 汤阴县| 沛县| 阳新县| 西乌珠穆沁旗| 贞丰县| 开鲁县| 新邵县|