为啥使用Cookie和session:
1.
在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。
在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下:
l 请求银行主页;
l 请求登录(请求参数是用户名和密码);
l 请求转账(请求参数与转账相关的数据);
l 请求信用卡还款(请求参数与还款相关的数据)。
在这上会话中当前用户信息必须在这个会话中共享的,因为登录的是张三,那么在转账和还款时一定是相对张三的转账和还款!这就说明我们必须在一个会话过程中有共享数据的能力。
会话路径技术使用Cookie或session完成
我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!
在JavaWeb中,使用session来完成会话跟踪,session底层依赖Cookie技术。
一. JSP里 COOKie
cookie是保存客户端里的,在html里,直接获取,在JSP里或servlet里要创建。
1.在JSP里,没有cookie,需要创建,Cookie需要添加。
格式:
1.创建: Cookie cookie=new Cookie("键",值);
2.设置时长: cookie.setMaxAge(num);num代表秒数。
3.添加到客户端:response.addCookie(cookie对象)
例:
Cookie cookie= new Cookie("code","lhl1"); cookie.setMaxAge(20); response.addCookie(cookie);
获取值:
通过 Cookie[] cookies=request.getCookies();
注意:输出值时, 其中JSESSIONID是服务器自己设置上到客户端上的。需要去除------->!key.equals("JSESSIONID")
2. jsp里 Session。
jsp里有session这个对象,所以不需要创建,直接使用就行。
1.格式:1.设置值 setAtrribute("键","值")
2.设置有效时长;
3.给客户端发送。
客户端:用session.getAttribute("键")获取。
步骤:
1. //jsp 存在seesion
session.setAttribute("name", "lhl"); session.setAttribute("pwd", "123"); 2.//设置session的有效时长 session.setMaxInactiveInterval(20); 3.response.sendRedirect("loginSession.jsp");客户端:
String str=(String)session.getAttribute("name");
String pwd=(String)session.getAttribute("pwd"); out.print(str+":"+pwd);