Cookie与Session的介绍即使用————Cookie
认识Cookie
1.简要介绍:
-
作用: Cookie是一种会话技术,用来将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器更好的实现数据交互。
-
原理: 用户通过浏览器访问web服务器时,服务器会给客户端发一些信息,这些信息保存在Cookie中,当浏览器在次访问服务器时,就会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。
-
注意:Cookie必须以键值对的形式存在,其属性可以有多个,但这些属性之间必须用分号(;)和空格( )分隔。
2.Cookie的常用方法:
3.Cookie使用案例
↓ 类名为Cookiedome的servlet中,代码如下,负责生成Cookie信息,并创建自定义的“id”信息
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String id="123";
Cookie cookie=new Cookie("id",id);
response.addCookie(cookie);
out.print("id="+id);
out.print("<br>");
out.print("id数据已经保存到Cookie");
out.close();
}
↓ 类名为ReceiveCookie的servlet中,代码如下,负责查看保存在Cookie数组中的所有信息,注释的代码可以查看指定
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Cookie [] cookies=request.getCookies();
//拿到的Cookie对象是多个,要用Cookie数组定义
if(cookies!=null) {
for(Cookie cookie: cookies) {
/*
*将Cookie数组信息全部打印输出
*注意:Cookie是以键值对的形式存储的,打印时用getName()和getValue()方法;
*/
out.println(cookie.getName()+" : "+cookie.getValue()+"<br>");
// 只打印Cookie数组信息中名字为id的值
// if(cookie.getName().equals("id")) {
// out.println("id="+cookie.getValue());
// }
}
}else {
out.print("Cookies为空");
}
out.close();
}
4.结果展示
1.结果一,生成Cookie信息并提取
↓ 先进入到Cookiedome中↓
↓ 再进入到RecriveCookie中
2.结果二,跳过Cookie信息生成,提取Cookie信息
↓ 在另外一个浏览器直接进入到ReceiveCookie中
5.总结
Cookie技术可以将用户的信息保存在各自的浏览器中,并且可以在多次请求下,实现数据共享。
但是,如果传递信息较多到时候,使用Cookie技术会增大服务器程序处理难度,这时可以使用Session实现。
Session是将会话数据保存到服务器端的技术。