欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cookie和session的使用

程序员文章站 2022-06-11 22:37:31
...

cookie和session的使用


cookie的使用

背景:cookie是1993年由网景公司(Netscape)前雇员发明的一种进行网络会话状态跟踪的技术

会话:会话则是由一组请求与响应组成,是围绕一件事情所进行的请求与响应。

作用:cookie是由服务器生成的,保存在客户端的一种信息载体。这个载体中存放着用户访问该站点的会话状态信息。只要cookie没有被清空,那么,保存在其中的会话状态就有效

//创建cookie(cookie的value是前台通过表单传进来的)
Cookie cookie1 = new Cookie("company","bjpowernode");
Cookie cookie2 = new Cookie("teacher","Reyco");
//指定cookie绑定的路径。注意,这里指定的路径要求必须添加上项目名称
cookie1.setPath(request.getContextPath()+"/xxx/ooo/aaa");
cookie2.setPath(request.getContextPath()+"/bbb");
//设置Cookie的有效期。这个值为一个整型值,单位为秒
//该值大于0,表示将Cookie存放到客户端的硬盘
//该值小于0,与不设置效果相同,会将Cookie存放到浏览器的缓存
//该值等于0,表示Cookie一生成,马上失效
cookie1.setMaxAge(60*60);//设置cookie的有效期为1小时
cookie2.setMaxAge(60*60*24*14);//设置cookie的有效期为两星期
//向响应中添加cookie
response.addCookie(cookie1);
response.addCookie(cookie2);
///////////////////////////////////////////////////////
//获取cookie
Cookie [] cookies = request.getCookies();
for(Cookie cookie : cookies){
	if(cookie.getName().equals("company")&&cookie.getValue().equals("bjpowernode")){
		//这里可以进行页面跳转之类的操作
		System.out.println("记住了上次登录信息");
		}
		else{
		//...
		}
	}
}

cookie的流程:用户提交第一次请求后,由服务器生成cookie,并将其封装到响应头中,以响应的形式发送给客户端。客户端收到这个响应后,将cookie保存到客户端。当客户端再次发送同类请求时,在请求中会携带保存客户端的cookie数据,发送到服务端,由服务器对会话进行跟踪

session的使用

///////////////////////////////////////////////设置的Servlet
//获取用户提交参数
String username = request.getParameter("username");
//将参数放入request域中
request.setAttribute("user",username);
//获取session对象
HttpSession session = request.getSession();//可以加true
//向Session域中写入属性
session.setAttribute("username",username);
///////////////////////////////////////////////获取的Servlet
//从request域中读取属性
String user = request.getParameter("user");//不用请求转发绑定在同一个request上就共享不了
//获取Session
HttpSession session = request.getSession(false);
//从session中读取指定属性
String username = null;
if(session != ){
	username = (String)session.getAttribute("username");
}
PrintWriter out = response.getWriter();
out.println("保存在request中的参数:"+user);
out.println("保存在session中的参数"+username);
//

对于request的getSession()的用法:

  • 一般情况下,若要向session中写入数据,则需要使用getSession(true),即getSession();意义是,有老的用老的,没老的创建新的
  • 若要向Session中读取数据,则需要使用getSession(false);意义是,有老的用老的,没老的返回null。因为要读取数据,只有老的session中才有可能存在你要查找的数据,新建的session中是不可能有这些数据的