Session内置对象

request内置对象中的属性只在当次请求中有效,如果要使属性在客户端跳转后仍然有效就要使用session内置对象了,session内置对象的类型是HTTPSession,
常见的方法有:
public void setAttribute(String name,Object value);保存属性
public Object getAttribute(String name);根据属性名取得值
public void removeValue(String name);根据属性名移除对应的值
public boolean isNew();判断当前用户是否是第一次访问
public void invalidate();销毁当前session,一般用于实现注销功能
public String getId();取得session的编号,和JSESSIONID cookie相同

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		HttpSession httpSession = req.getSession();
		String sessionId = httpSession.getId();
		System.out.println(sessionId);
	}

![在这里插入图片描述](https://img-blog.cs## 标题dnimg.cn/20190602210458514.png)
设置session的超时时间,在Tomcat/conf/web.xml中设置,默认30分钟

  <!-- ==================== Default Session Config ===================== -->
    <session-config>
    	<session-timeout>60</session-timeout>
    </session-config>

session工作机制

当第一次调用getSession()时就创建了session对象,并且会为该对象分配一个id,将这个id保存在session对象中,在复制一个副本以cookie的形式保存到浏览器,
在以后再次调用getSession()方法的时候会将客户端传递的cookie进行遍历判断,
如果有JSESSIONID并且能和服务端的id匹配则不再生成新的session,而是直接返回该对象
如果直接访问servlet,不调用getSession()方法是不会生成session内置对象
访问JSP页面时也会产生session对象,访问JSP页面时会将jsp转换成java源码文件,再转换成.class文件,转换后的字节码文件就是一种特殊的servlet,默认调用getSession()方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值