session

cookie是解决了不同的发送请求的数据共享的问题,它是浏览器端的数据存储技术,而session是解决一个用户的不同请求的数据共享问题,是服务器端的数据存储技术。

用户使用浏览器第一次向服务器发送请求,服务器接收请求,调用相应的servlet处理,同时给用户创建一个session对象,用来保存用户请求处理的相关数据。并且将session对象的JSESSIONID以cookie的形式发送给浏览器进行存储(临时存储,浏览器关闭即失效)。用户再次发起请求时,请求信息会附带JSESSIONID,服务器进行处理时,会根据JSESSIONID返回对应的对象,这样就能取到需要用的数据。每个用户的JSESSIONID是不同的,这样就可以识别发送请求的是哪个用户。

请求一创建session对象,并以键值对的形式保存数据

package com.bjsxt.session;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class SessionDemo extends HttpServlet {
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		//设置请求编码格式
		req.setCharacterEncoding("utf-8");
		//设置响应编码格式
		resp.setContentType("text/html;charset=utf-8");
		//获取请求信息
		String name = "张三";
		//处理请求信息
			//创建session对象
			HttpSession hs = req.getSession();
			//获取JESSIONID
			System.out.println(hs.getId());
                        //存储数据
			hs.setAttribute("name", name);
		
	}
}

1.浏览器第一次访问,HttpSession hs = req.getSession();会检查请求中有没有JSESSIONID,没有,则创建session对象,并将其JSESSIONID以cookie的形式返回浏览器,让浏览器保存。


2.不关浏览器,重新访问,HttpSession hs = req.getSession();继续检查有没有JSESSIONID,发现请求中有,所以就不会新建session对象,所以产生的JSESSIONID也和上次相同(获取到了session对象),也就是同一个用户了。


3.关闭浏览器,重新打开,再次访问,发现产生了新的JSESSIONID,即又创建了新的session对象。


浏览器关闭,JSESSIONID就会失效,它是在一次回话中的,默认的保存时间为30分钟,就和我们经常遇到的网站,有时候过了30分钟没有任何操作(只有有一次请求,它是会重新计时的),就会让你重新登录,这就是因为JSESSIONID失效了。

HttpSession hs = req.getSession();它即是创建session对象,也是在获取session对象,视请求中有没有JSESSIONID而定。

4.hs.setAttribute("name", name);存储数据

请求二,取到上次的数据

package com.bjsxt.session;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class SessionDeno2 extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		HttpSession hs = req.getSession();
		System.out.println(hs.getAttribute("name"));
	}
}

5.hs.getAttribute("name")获取数据。

通过session机制,我们就通过不同的请求,获得了用户共享的数据


阅读更多
个人分类: Java
想对作者说点什么? 我来说一句

session原理

2018年02月24日 267KB 下载

session 学习要点

2011年05月24日 1KB 下载

cgic_session.zip

2009年12月03日 52KB 下载

session与cookie区别精选

2017年09月12日 20KB 下载

session资料

2011年11月02日 54KB 下载

tomcat集群实现session复制

2011年08月15日 15KB 下载

session和cookie的区别

2018年01月09日 3KB 下载

session驱动类 session存入数据库

2015年11月05日 5KB 下载

Session丢失的原因及解决办法

2016年03月08日 53KB 下载

没有更多推荐了,返回首页

不良信息举报

session

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭