好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java中的session对象及其常用方法小结

session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。

在jsp页面中可以直接使用session对象(jsp的内置对象),也可以通过pageContext.getSession()或者request.getSession重新回去session对象。

session可以保存用户的信息和实现购物车等功能。

HTTP协议是一种无状态协议,客户向服务器发出的请求request,然后服务器返回响应response,连接就被关闭了,在服务器不保存连接的有关信息,因此在下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和上一次连接时同一个客户信息,因此,必须使用会话记录有关连接的信息。

从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器是,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。

session的工作原理如下:

1、客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立一一对应的关系;

2、当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。

3、当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。

session对象主要用于属性操作和会话管理,常用方法如下:

1、 public void setAttribute(String name,String value) 设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。

2、 public Object getAttribute(String name) 在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。

3、 public void removeAttribute(String name) ,删除指定名字的session属性,若该属性不存在,则出现异常。

4、 public void invalidate() ,使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。

5、 public String getId( ) ,获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。

6、 public void setMaxInactiveInterval(int interval) 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。

7、 public int getMaxInActiveInterval() ,获取会话的最大持续时间。

8、使用session对象的getCreationTime()和getLastAccessedTime()方法可以获取会话创建的时间和最后访问的时间,但其返回值是毫秒,一般需要使用下面的转换来获取具体日期和时间。

?

1

2

Date creationTime = new Date(session.getCreationTime());

Date accessedTime = new Date(session.getLastAccessedTime());

?

1

2

3

4

5

<%@ page language= "java" import = "java.util.*" contentType= "text/html;charset=GBK" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;

%>

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

< html >

   < head >

     < base href="<%=basePath%>" rel="external nofollow" >  

     < title >session对象方法</ title >

   

  < meta http-equiv = "pragma" content = "no-cache" >

  < meta http-equiv = "cache-control" content = "no-cache" >

  < meta http-equiv = "expires" content = "0" >  

  < meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >

  < meta http-equiv = "description" content = "This is my page" >

  <!--

  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >

  -->

   </ head >

 

   < body >

     < b >

     会话ID:<%=session.getId() %> < br >

     是否新会话:<%=session.isNew() %>< br >

     设置和获取属性对象:用户名 =

     <%session.setAttribute("用户名","bing"); %>

     <%=session.getAttribute("用户名") %>< br >

     <%

     Date creationTime = new Date(session.getCreationTime());

     Date accessedTime = new Date(session.getLastAccessedTime());

      %>

      会话创建时间:<%=creationTime %>< br >

      上次访问时间:<%=accessedTime %>< br >

      会话持续时间(s):<%=session.getMaxInactiveInterval() %>< br >

      <%session.setMaxInactiveInterval(12); %>

      修改后的会话持续时间(s):<%=session.getMaxInactiveInterval() %>< br >

      <%session.invalidate(); %>

      </ b >

   </ body >

</ html >

获取session常用的几种方法

1.spring mvc中

?

1

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

2. struts2中

(1)

?

1

2

3

4

ActionContext context = ActionContext.getContext();

Map request = (Map) context.get( "request" );

Map session = context.getSession();

Map application = context.getApplication();

(2)

?

1

2

3

4

5

6

ActionContext actionContext = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest) actionContext

.get(ServletActionContext.HTTP_REQUEST);

HttpSession session = request.getSession();

ServletContext context = (ServletContext) actionContext

  .get(ServletActionContext.SERVLET_CONTEXT);

3.通过ServletActionContext获取

?

1

2

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/tanyongbing1988/article/details/45666137

查看更多关于java中的session对象及其常用方法小结的详细内容...

  阅读:17次