校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Spring mvc 分步式session的實例詳解

Spring mvc 分步式session的實例詳解

熱門標簽:海外圖書館地圖標注點 給地圖標注得傭金 自繪地圖標注數(shù)據(jù) 外呼系統(tǒng)使用方法 南通通訊外呼系統(tǒng)產品介紹 電話機器人需要使用網(wǎng)絡嗎 潤滑油銷售電銷機器人 電銷機器人免培訓 如何看懂地圖標注點

Spring mvc 分步式session的實例詳解

Session代表服務器與瀏覽器的一次會話過程,它的信息是保存在服務器端的。在Servlet中,session指的是HttpSession類的對象。服務器在創(chuàng)建session后,會把sessionid以cookie的形式回寫給客戶端。只要客戶端的瀏覽器不關,每一次訪問服務器都會帶上這個sessionid。這樣就可以在每次請求的時候獲取到session的信息。

下面以spring MVC以例來說明如果創(chuàng)建分步式session.

1、login – 登錄頁

login表示用戶跳轉到登錄頁面,這個時候可以生成唯一key為sessionid的sesssionid。保存sessionid到response中,當用戶真正登錄的時候獲取sessionid,因為是分步式所以統(tǒng)一的管理sessionid,把它保存在Redis緩存中。

public class LoginController{

  private static final String SESSION_ID_COOKIE = "sessionId";

  @Autowired
  private RedisClient client;

  @RequestMapping(value="/login/index")
  public ModelAndView login(HttpServletRequest request, HttpServletResponse response){
    ModelAndView modelAndView = new ModelAndView("/login");
    String sessionId = CookieUtils.getCookieValue(request, SESSION_ID_COOKIE);
    if(StringUtils.isEmptyOrNull(sessionId)) {
      sessionId = getUniqueSessionId();
      addCookie(response, SESSION_ID_COOKIE, sessionId);
    }
    // 其它業(yè)務相關信息

    return modelAndView;
  }

  // 添加cookie到response
  private void addCookie(HttpServletResponse response, String cookieName, String cookieValue) {
    Cookie cookie = new Cookie(cookieName, cookieValue);
    cookie.setPath("/");
    cookie.setMaxAge(-1);
    response.addCookie(cookie);
  }

  // 獲取唯一sessionid
  private String getUniqueSessionId() {
    String sessionId = "";
    while(true) {
      String uuid = UUID.randomUUID().toString();
      String[] jsessionIdArray = uuid.split("-");
      StringBuilder jsessionIdBuilder = new StringBuilder();
      for(String str: jsessionIdArray) {
        jsessionIdBuilder.append(str);
      }
      sessionId = jsessionIdBuilder.toString();
      if(!redisClient.exists(sessionId)) {
        break;
      }
    }
    return sessionId;
  }
}

2、authenticate – 身份認證/登錄

用戶輸入用戶名密碼,需要在后臺進行登錄。此時可以從cookie中獲取到sessionid,然后再從redis里面獲取到它的值sessionidvalue。并且把需要保存的session信息以sessionidvalue為key,保存在redis里面。

public class LoginController{

  private static final String SESSION_ID_COOKIE = "sessionId";

  private static final Integer REDIS_SESSION_TIME_SECONDS = 2 * 60 * 60;

  @Autowired
  private RedisClient client;

  @RequestMapping(value="/authenticate")
  @ResponseBody
  public ResponseInfo login(String username, String password, HttpServletRequest request){
    ResponseInfoObject> responseInfo = new ResponseInfoObject>();
    try {
      Account account = authenticate(username, password);

      saveSession(account);
      responseInfo.setStatus(0);
      responseInfo.setMessage("success");
    } catch(Exceptioin e){
      responseInfo.setStatus(1);
      responseInfo.setMessage("服務器正忙,請稍候重試")
    }

    return responseInfo;
  }

  // 保存session信息
  private void saveSession(Account account) {
    String sessionId = CookieUtils.getCookieValue(request, SESSION_ID_COOKIE);
    redisClient.set(sessionId, account);
    redisClient.expire(sessionId, REDIS_SESSION_TIME_SECONDS);
  }
}

3、logout – 登出

當用戶選擇退出系統(tǒng)時,需要把頁面跳轉到登錄頁面也就是第一步并且需要刪除在redis里面的session信息以及在Cookie里面的sessionid.

public class LoginController{

  private static final String SESSION_ID_COOKIE = "sessionId";

  @Autowired
  private RedisClient client;

  @RequestMapping(value="/logout", method = RequestMethod.GET)
  public void logout(HttpServletRequest request, HttpServletResponse response) {
    // 獲取到重定向位置也就是登錄頁
    String redirectUrl = this.getLoginPageRedirectUrl(request);

    clearSession(request);
    clearSessionCookie(request, response);
    response.sendRedirect(redirectUrl);
  }

  // 刪除session在redis里面的信息
  private void clearSession(HttpServletRequest request) {
    String sessionId = CookieUtils.getCookieValue(request, SESSION_ID_COOKIE);
    redisClient.del(sessionId);
  }

  // 刪除session在cookie中的sessionid
  private void clearSessionCookie(HttpServletRequest request, HttpServletResponse response) {
    Cookie sessionCookie = CookieUtils.getCookie(request, SESSION_ID_COOKIE);
    sessionCookie.setMaxAge(0);
    response.addCookie(sessionCookie);
  }
}

4、獲取session

可以把獲取session提取到公共的Controller中,這樣需要使用session信息的類就可以繼承這個類。

public class BaseController{

  @Autowired
  private RedisClient redisClient;

  protected Account getAccountFromSession(HttpServletRequest request) {
    String sessionCookieValue = CookieUtils.getCookieValue(request, "sessionid");
    if(StringUtils.isEmptyOrNull(sessionCookieValue)) {
      return null;
    } else {
      String accountJson = this.redisClient.get(sessionCookieValue);
      Account account = null;
      if(!StringUtils.isEmpty(accountJson)) {
        account = (Account)JSON.parseObject(casInfoJson, Account.class);
      }

      return account;
    }
  }

}

5、總結

使用第三方管理session時的基本步驟如下。

  • 進入登錄頁面保存sessionid到cookie中
  • 用戶登錄成功根據(jù)sessionid的值把Session保存在redis里面
  • 用戶登出系統(tǒng)需要清除cookie中的sessionid,以及redis里面用戶的session信息。

當用戶登錄成功之后進行其它操作就可以在request里面獲取到用戶的session信息。

 如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • 詳解Spring mvc ant path的使用方法
  • Spring MVC全局異常處理和單元測試_動力節(jié)點Java學院整理
  • Spring MVC入門_動力節(jié)點Java學院整理
  • Spring MVC之DispatcherServlet_動力節(jié)點Java學院整理
  • Spring MVC之WebApplicationContext_動力節(jié)點Java學院整理
  • Spring MVC訪問靜態(tài)文件_動力節(jié)點Java學院整理
  • spring mvc常用注解_動力節(jié)點Java學院整理
  • springMVC圖片上傳的處理方式詳解

標簽:樂山 貸款邀約 銅川 內江 黃石 大連 南京 廣州

巨人網(wǎng)絡通訊聲明:本文標題《Spring mvc 分步式session的實例詳解》,本文關鍵詞  Spring,mvc,分步,式,session,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Spring mvc 分步式session的實例詳解》相關的同類信息!
  • 本頁收集關于Spring mvc 分步式session的實例詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    色网站国产精品| 国产成人av电影在线播放| 91精品中文字幕一区二区三区| av中文字幕不卡| 国产不卡视频一区二区三区| 首页欧美精品中文字幕| 亚洲综合精品久久| 国产女主播一区| 久久九九99视频| 久久免费看少妇高潮| 欧美大尺度电影在线| 51精品国自产在线| 日韩欧美一二区| 在线观看免费成人| 在线视频观看一区| 欧美三级日韩在线| 在线不卡中文字幕播放| 91精品国产乱| 精品卡一卡二卡三卡四在线| 久久久久久夜精品精品免费| 久久―日本道色综合久久| 国产欧美日韩在线视频| 国产精品激情偷乱一区二区∴| 1000精品久久久久久久久| 一区二区三区在线视频观看58 | 国产高清亚洲一区| 成a人片国产精品| 欧美四级电影网| 精品国产免费久久| 日韩美女啊v在线免费观看| 五月天激情综合| 国产成人a级片| 在线看不卡av| 久久久久免费观看| 一区二区三区在线观看国产| 日本不卡123| 97精品电影院| 欧美一区在线视频| 久久天天做天天爱综合色| 亚洲色图在线看| 久久国产尿小便嘘嘘| 91女人视频在线观看| 欧美一级一区二区| 亚洲天堂成人在线观看| 日韩中文字幕一区二区三区| 国产成a人亚洲精品| 欧美日本国产一区| 国产精品久久久久久久久久久免费看 | 日韩电影在线一区| 国产成人在线色| 欧美性受极品xxxx喷水| 国产日本亚洲高清| 美女一区二区视频| 91成人免费在线| 亚洲精品一二三| 日韩国产欧美视频| 91黄色小视频| 国产性色一区二区| 男男gaygay亚洲| 在线免费观看日韩欧美| 国产亚洲精品资源在线26u| 日韩精品一级中文字幕精品视频免费观看 | 欧美视频在线播放| 国产精品不卡在线| 激情另类小说区图片区视频区| 欧美日韩国产精品成人| 亚洲欧美日韩电影| 成人h动漫精品一区二区| 久久久影院官网| 国内精品视频666| 精品国产青草久久久久福利| 日本在线不卡视频| 91精品国产综合久久久久| 亚洲国产毛片aaaaa无费看| 一本一道波多野结衣一区二区| 日本一区二区免费在线| 国产精品一区二区久久精品爱涩 | 欧美一区二区三区影视| 亚洲一区二区在线免费观看视频| 成人av在线影院| 国产精品成人在线观看| zzijzzij亚洲日本少妇熟睡| 国产精品视频在线看| 福利91精品一区二区三区| 国产片一区二区| 高清不卡一区二区| 亚洲欧洲成人精品av97| 成人免费看的视频| 1024精品合集| 欧日韩精品视频| 日韩在线一二三区| 亚洲精品一区二区三区在线观看| 精品伊人久久久久7777人| xnxx国产精品| 成人av动漫网站| 亚洲一区二区三区影院| 欧美理论在线播放| 国产乱色国产精品免费视频| 中文乱码免费一区二区| 在线看国产一区二区| 日本麻豆一区二区三区视频| 精品国产精品网麻豆系列| 成人一级视频在线观看| 一区二区在线电影| 久久综合中文字幕| 一本大道久久精品懂色aⅴ| 亚洲国产美女搞黄色| 日韩欧美一级在线播放| 成人免费观看av| 亚欧色一区w666天堂| 欧美精品一区二区蜜臀亚洲| 成人天堂资源www在线| 亚洲图片欧美视频| 久久久久久久久久看片| 色综合久久久久综合99| 久久精品免费看| 日韩伦理电影网| 日韩精品一区二区三区三区免费 | 天天综合网天天综合色| 精品国产91乱码一区二区三区 | 日本特黄久久久高潮| 久久综合久色欧美综合狠狠| 成人av在线资源| 日韩在线卡一卡二| 亚洲欧洲精品天堂一级| 在线播放日韩导航| 成人福利视频在线看| 日韩国产欧美在线播放| 亚洲欧美在线aaa| 精品国产乱码久久久久久老虎| 在线观看视频91| 国产a视频精品免费观看| 石原莉奈一区二区三区在线观看| 国产精品青草久久| 日韩免费视频一区| 91成人在线免费观看| 粉嫩13p一区二区三区| 男人的天堂久久精品| 亚洲国产精品久久人人爱蜜臀| 国产欧美日韩三级| 欧美一级夜夜爽| 欧美久久久久免费| 欧美系列在线观看| 91女神在线视频| av亚洲精华国产精华精华| 久久精品99国产精品日本| 视频一区免费在线观看| 亚洲久本草在线中文字幕| 国产精品免费av| 日本一区二区在线不卡| 精品国产人成亚洲区| 日韩欧美综合一区| 91精品国产91久久综合桃花| 欧美三级日本三级少妇99| 91色视频在线| 91浏览器打开| 色网综合在线观看| eeuss鲁一区二区三区| 成人免费看片app下载| 豆国产96在线|亚洲| 成人免费视频网站在线观看| 国产精品一区二区免费不卡| 国产精品自拍网站| 国产成人鲁色资源国产91色综| 国产一区二区三区视频在线播放| 麻豆中文一区二区| 久久精品免费观看| 国产精品一色哟哟哟| 国产高清视频一区| 国产美女精品人人做人人爽 | 亚洲女人的天堂| 日本欧美加勒比视频| 亚洲一区二区三区中文字幕 | 国产乱码精品一品二品| 国产一区二区免费看| 久久国产精品免费| 国产另类ts人妖一区二区| 国产乱理伦片在线观看夜一区| 风间由美一区二区三区在线观看| 国产成人av影院| 成人在线视频首页| 91免费观看国产| 欧美日韩精品高清| 亚洲精品在线一区二区| 国产精品美女视频| 亚洲欧美日韩在线| 亚洲国产一区二区三区青草影视| 亚洲电影在线播放| 久久精品国产精品亚洲综合| 精品一区二区三区视频在线观看| 国产九色精品成人porny| 成人小视频免费在线观看| 色哟哟在线观看一区二区三区| 欧美三级日韩三级国产三级| 日韩亚洲欧美在线观看| 久久久久久久综合狠狠综合| 国产精品国产自产拍在线| 偷窥国产亚洲免费视频| 国产精品一区二区在线观看不卡 | 国产高清不卡一区|