日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Session实战

發布時間:2024/4/13 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Session实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在maven里面我們已經把這個類引入進來了,然后接下來我們寫一個類,這個類是什么呢,就是UserController,因為UserController里面已經用Redis的方式實現了,實現的還是Shard分布式的,這里面為了做一個擴展,我們項目還是會用自定義的單點登陸的方式,并且這種是分布式的,為了課程講解,我們copy一個UserController,然后只保留三個,登陸登出,獲取用戶信息,這三個就是存session,刪session,讀session,因為我們很多判斷權限的地方,是直接從session里面拿的,非常簡單,這個就叫UserSpringSessionController,都是用servlet提供的一個session,我們來看session是如何被Spring Session包裝的,體會對業務沒有侵入的session框架,現在我們來配置這個Spring Session,從第一個方面,第一個是web.xml,增加一個filter節點,<!-- spring session框架和自己實現的redis二選一 --><filter><filter-name>springSessionRepositoryFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSessionRepositoryFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping>委托的過濾器代理,我們使用DelegatingFilterProxy package com.learn.controller.portal;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import com.learn.common.Const; import com.learn.common.ServerResponse; import com.learn.pojo.User; import com.learn.service.IUserService;/*** * @author Leon.Sun**/ @Controller @RequestMapping("/user/springsession/") public class UserSpringSessionController {@Autowiredprivate IUserService iUserService;/*** 用戶登錄* @param username* @param password* @param session* @return*/@RequestMapping(value = "login.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<User> login(String username, String password, HttpSession session, HttpServletResponse httpServletResponse){//測試全局異常 // int i = 0; // int j = 666/i;ServerResponse<User> response = iUserService.login(username,password);if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData()); // CookieUtil.writeLoginToken(httpServletResponse,session.getId()); // RedisShardedPoolUtil.setEx(session.getId(), JsonUtil.obj2String(response.getData()),Const.RedisCacheExtime.REDIS_SESSION_EXTIME);}return response;}@RequestMapping(value = "logout.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<String> logout(HttpSession session,HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse){ // String loginToken = CookieUtil.readLoginToken(httpServletRequest); // CookieUtil.delLoginToken(httpServletRequest,httpServletResponse); // RedisShardedPoolUtil.del(loginToken);session.removeAttribute(Const.CURRENT_USER);return ServerResponse.createBySuccess();}@RequestMapping(value = "get_user_info.do",method = RequestMethod.GET)@ResponseBodypublic ServerResponse<User> getUserInfo(HttpSession session,HttpServletRequest httpServletRequest){// String loginToken = CookieUtil.readLoginToken(httpServletRequest); // if(StringUtils.isEmpty(loginToken)){ // return ServerResponse.createByErrorMessage("用戶未登錄,無法獲取當前用戶的信息"); // } // String userJsonStr = RedisShardedPoolUtil.get(loginToken); // User user = JsonUtil.string2Obj(userJsonStr,User.class);User user = (User)session.getAttribute(Const.CURRENT_USER);if(user != null){return ServerResponse.createBySuccess(user);}return ServerResponse.createByErrorMessage("用戶未登錄,無法獲取當前用戶的信息");} }

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Spring Session实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。