Session基本使用
介绍
在WEB开发中,服务器为每个用户浏览器创建一个会话对象(session对象),一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Session,有始有终的一系列动作/消息的意思,举个栗子来说:比如我们一次打电话,从接起电话到你挂断电话的一系列过程可以称为一个Session。
与cookie区别
1.session是服务端存储,cookie是浏览器端存储
2.Cookie是把用户的数据写给用户的浏览器。
3.Session技术把用户的数据写到用户独占的session中。
4.Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
常用方法
isNew():是否是新的Session,一般在第一次访问的时候出现
getid():拿到session,获取ID
getCreationTime():当前session创建的时间
getLastAccessedTime():最近的一次访问这个session的时间。
getRrquestedSessionid: 跟随上个网页cookies或者URL传过来的session
isRequestedSessionIdFromCookie():是否通过Cookies传过来的
isRequestedSessionIdFromURL():是否通过重写URL传过来的
isRequestedSessionIdValid():是不是有效的sessionID
使用
登录时保存用户登录信息
@Autowired
private HttpSession session;
/**
* 管理员登录验证
*
* @param username 管理员名称
* @param password 管理员密码
* @param model
* @return
*/
@RequestMapping(value = "/login")
public String login(String username, String password, Model model, HttpSession session, HttpServletRequest request) {
if (adminService.login(username, password) != null) {
request.getSession().setAttribute("userName", username);
Admin admin = adminService.findAdminByNameAndPwd(username, password);
if (admin != null) {
return "redirect:/admin/home";
}
}
model.addAttribute("error", "密码或名称错误");
return "login";
}
用户退出时间
/**
* 退出登录
*
* @return
*/
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public ModelAndView logout() {
session.invalidate();
ModelAndView modelAndView = new ModelAndView("login");
return modelAndView;
}
设置失效时间
**Session对象末日30分钟没有使用,则服务器会自动销毁session,在web。xml文件中可以手工配置Session的失效时间。为0或负数时表示永不
失效。**
<!--设置session永不失效-->
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!