Session基本使用

发布时间 2023-04-23 12:01:44作者: YE-

##介绍
      在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>

 ```