详述session与cookie(二)session篇

1. session是什么

前文说到,为了在无状态的HTTP协议中保持状态,cookie出现了。但是cookie是保存在客户端的,因此有两个问题,一是大小有限,二是用户可见,因此用户可修改,很不安全。这时候,session诞生了。

session是存在于服务器端的会话对象,session机制就是一种在客户端与服务器之间保持状态的解决方案。

2. session机制

session的机制基于session_id

当程序要为客户端的请求创建session时,首先要检查请求中是否包含一个session_id。如果已经包含,说明已经为这个客户端创建过session了;反之,就创建一个新的session,并且有唯一的session_id,这个id在响应中返回给客户端保存。

值得一提的是,session在服务端是用hash表的形式来保存的。

发给客户端的session_id通过cookie保存,一般name是JSESSIONID。如果不用cookie,还可以用url重写的方法,将session_id附在之后访问的URL后面。

3. 一个实例

来源 https://www.cnblogs.com/xdp-gacl/p/3855702.html

public class SessionDemo1 extends HttpServlet{
	public void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException{
        response.setCharacterEncoding("UTF=8");
        response.setContentType("text/html;charset=UTF-8");
        
        HttpSession session = request.getSession();
        session.setAttribute("data", "xqm");
        String sessionId = session.getId();
        if (session.isNew()) {
        	response.getWriter().print("session创建成功,sessionId = " + sessionId);
        }
        else {
        	response.getWriter().print("session已经存在,sessionId = " + sessionId);
        }
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException{
		doGet(request, response);
	}
}

4. session的销毁

默认存活时间是30分钟,可以在web.xml中修改。单位是分钟

<session-config>
    <session-timeout>5</session-timeout>
</session-config>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值