《JSP2.0 技术手册》读书笔记二-HttpSession

Internet通讯协议分为两类:Stateful与Stateless,根据连接状态是否持续来区分。Telnet与FTP属于stateful协议,客户端与服务端保持一个持续性的联机来传达各种操作。Http是stateless协议,客户端发出一次请求,服务端建立一个连接,请求得到响应后,连接中断。

通常的应用都是利用http协议来进行通信,服务端要想把用户的状态或者其他信息与一个客户端联系起来,即确定是这次请求依然是哪个客户端传过来的,如要实现购物车功能,那么就需要进行会话追踪了。会话追踪有如下办法:

(1). 在页面中建立含有数据的隐藏表单字段。如<input type="hidden" name="username" value="Jack" />。但不安全,可以通过查看页面源代码的方法看到具体数据。

(2). 重写URL,即在URL后加额外的参数。如http://www.test.com/hello.jsp?userid=123&pwd=123,不安全而且url长度是有限制的。

(3). 使用持续cookie。服务端生成,发送给客户端,客户端以key/value的形式将信息存在本地的一个小文本文件中即cookie,下次请求同一网站时将该cookie发送给服务端。但隐私问题、广告等,也容易被客户限制使用。

(4). HttpSession,会话对象。javax.servlet.http.HttpSession。用于对无状态的http协议下越过多个请求页面来维持状态和识别用户。它是内置的隐含对象,在jsp中可以直接使用session对象。

生命周期:当用户向服务端发送第一个请求时,建立一个HttpSession对象session,当session超时或者用户显式结束时销毁。一般session在一段时间没有作用就会自动失效。对于同一个应用,有多少个不同的用户连接,servlet容器就会产生多个httpsession对象,即一个用户对应一个session。也可在web.xml中手动设置session的过期时间。

<web-app> <session-config> <!--session过期时间为10分钟--> <session-timeout>10</session-timeout> </session-config> </web-app> 

另外还可以用HttpSession的方法来控制session的销毁。如下:

//设定session若10秒内没有活动则过期 session.setMaxInactiveInterval(10); //显式让session失效 session.invalidate(); 

session使用:

1. 获得HttpSession对象。在jsp页面中直接使用session;servlet中从请求中提取HttpSession对象-HttpServletRequest.getSession()或HttpServletRequest.getSession(boolean create),效果都是返回与这个请求关联的当前有效的session。没有参数,那么当没有有效session时就会新建一个session。带布尔参数时,若为true,当没有有效session时建立session;若为false,没有有效session时返回空值。

2. 存取属性。各方法的作用正如其名字所述。

void setAttribute(string name, Object value); Object getAttribute(String name); Enumeration getAttributeNames(); void removeAttribute(String name); 

 

 

转载于:https://www.cnblogs.com/whuqin/archive/2010/10/11/4982130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值