Session笔记

1.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。(HttpSession)

2.快速入门:

(1)获取HttpSession对象:
	HttpSession session = request. getSession();
(2)使用HttpSession对象 :
	object getAttribute(String name )
	void setAttribute(String name, object value)
	void removeAttribute(String name)

3、原理:

Session的实现是依赖于Cookie

4、细节问题:

(1)当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
	默认情况下不是。
	
	*如果需要相同,则可以创建Cookie ,键为JSESSIONID, 设置最大存活时间,
	让cookie持久化保存。
	
	代码:
		Cookie C = new Cookie("JSESSIONID", session. getId());
		C. setMaxAge(60*60) ;
		respgnse . addCookie(c);
(2)客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
	不是同一个,但是要确保数据不丢失,所以tomcat会自动完成以下工作:
		 session的钝化:
			*在服务器正常关闭之前,将session对象序列化到硬盘上
		session的活化:
			*在服务器启动后,将session文件转化为内存中的session对象即可
(3) session的失效时间?
	1.服务器关闭
	2. session对象调用invalidate()方法 。
	3. session默认失效时间30分钟
		可以选择性配置修改
		<session-config>
		<session- timeout>30</session-timeout>
		</session-config>

5、Session的特点:

1. session用于存储一次会话的多次请求的数据,存在服务器端
2. session可以存储任意类型,任意大小的数据

6、session与Cookie的区别:

1. session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全

例子

package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/SessionServlet1")
public class SessionServlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.setAttribute("key","value");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/SessionServlet2")
public class SessionServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        Object key = session.getAttribute("key");
        System.out.println(key);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值