7、Servlet会话跟踪

一、会话跟踪:

  不管操作多少功能,都是与当前登录用户相关的信息,当前的登录用户始终没有改变,也就是用户名和密码都没有丢失。但HTTP协议是一个无状态的协议,当一个客户向服务器发出请求(request),在服务器返回响应(response)后,连接就关闭了。这时,在服务器端不保留连接相关的信息,因此当下一次请求连接时,服务器已没有以前连接的信息了,也就无法判断这一次连接和以前的连接是否属于同一客户,也就是说Web服务器无法跟踪客户状态。在 Servlet 规范中,常用以下两种机制完成会话跟踪:

  a)使用持续的Cookie
  b)使用Session(会话)机制

二、Cookie:Cookie以“名-值”对的形式保存数据

  1.创建Cookie对象: new Cookie(name,value);
  2.设置最大时效 :setMaxAge(int age);
  3.将Cookie放入到HTTP响应报头:  addCookie(Cookie cookie);

  【注意】如果创建了一个cookie,并将它发送到浏览器,默认情况下它是一个会话级别的cookie,他将被存储在浏览器的内存中,用户退出浏览器之后被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用setMaxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。

  1)、将数据写入Cookie中:

 1 package com.st.user;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.Cookie;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10
11 @SuppressWarnings("serial")
12 public class UserLoginTest extends HttpServlet{
13     @Override
14     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
15             throws ServletException, IOException {
16         // TODO Auto-generated method stub
17     }
18     @Override
19     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
20             throws ServletException, IOException {
21         // TODO Auto-generated method stub
22         req.setCharacterEncoding("UTF-8");  //post乱码专用解决方式
23         String userName = req.getParameter("userName");
24         String passWord = req.getParameter("passWord");
25         System.out.println(userName);
26         System.out.println(passWord);
27         Cookie cookieByName = new Cookie("userName",userName);
28         Cookie cookieByPassWord = new Cookie("passWord", passWord);
29         /*cookieByName.setMaxAge(24 * 60 * 60); //设置在硬盘上保存的时间,以秒为单位。
30         cookieByPassWord.setMaxAge(24 * 60 * 60);因为保存在硬盘上,所以即便是服务器重启了依然可以访问*/
31         resp.addCookie(cookieByName);
32         resp.addCookie(cookieByPassWord);
33         //转发
34 //        req.getRequestDispatcher("/home.jsp").forward(req, resp);
35         //重定向
36         resp.sendRedirect("home.jsp");
37     }
38 }

  2)、读取cookie中的值:

 1 package com.st.user;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.Cookie;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 @SuppressWarnings("serial")
13 public class BookServletTest extends HttpServlet {
14
15     public void doGet(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17     }
18     public void doPost(HttpServletRequest request, HttpServletResponse response)
19             throws ServletException, IOException {
20         request.setCharacterEncoding("UTF-8");
21         System.out.println(request.getParameter("bookName"));
22         Cookie cookie []= request.getCookies();  //返回的是cookie的一个数组
23         for(Cookie c: cookie){
24             if("userName".equals(c.getName()))
25                 System.out.println("userName="+c.getValue());
26             else if("passWord".equals(c.getName()))
27                 System.out.println("password="+c.getValue());
28         }
29         response.setContentType("text/html");
30         PrintWriter out = response.getWriter();
31         out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
32         out.println("<HTML>");
33         out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
34         out.println("  <BODY>");
35         out.print("    This is ");
36         out.print(this.getClass());
37         out.println(", using the POST method");
38         out.println("  </BODY>");
39         out.println("</HTML>");
40         out.flush();
41         out.close();
42     }
43 }
时间: 2024-12-29 07:06:41

7、Servlet会话跟踪的相关文章

Servlet - 会话跟踪

会话跟踪 标签 : Java与Web 会话跟踪 HTTP本身是"无状态"协议,它不保存连接交互信息,一次响应完成之后即连接断开,下一次请求需要重新建立连接,服务器不记录上次连接的内容.因此如果判断两次连接是否是同一用户, 就需要使用会话跟踪技术来解决.常见的会话跟踪技术有如下几种: URL重写: 在URL结尾附加会话ID标识,服务器通过会话ID识别不同用户. 隐藏表单域: 将会话ID埋入HTML表单隐藏域提交到服务端(会话ID不在浏览器页面显示). Cookie: 第一次请求时服务器主

Servlet会话管理——Cookie会话跟踪

Cookie是一块可以嵌入到HTTP请求和响应中的数据.典型情况下,Web服务器将Cookie值嵌入到响应的Header,而浏览器则在其以后的请求中都将携带同样的Cookie.Cookie的信息中可以有一部分用来存储会话ID,这个ID被服务器用来将某些HTTP请求绑定在会话中.Cookie由浏览器保存在客户端,通常保存为一个文本文件.Cookie还含有一些其他属性,如可选的注释.版本号及最长生存周期等. 由于统一客户端对服务器的请求都会携带Cookie,因此可以通过在Cookie中添加与会话相关

JavaWeb会话跟踪

cookie和session是常用的会话跟踪技术 cookie机制 1.web应用程序是使用HTTP协议传输数据的,HTTP协议是无状态的协议,一旦数据交换完毕就会关闭链接.Cookie可以弥补HTTP协议无状态的不足. 位于:javax.servlet.http.Cookie 2.Cookie具有不可跨域名性.Cookie的管理是浏览器,浏览器判断一个网站是否能操作另一个网站的Cookie的依据是域名.例:images.baidu.com与www.baidu.com不是同一个域名,cookie

会话跟踪技术

会话跟踪是一种灵活.轻便的机制,它使Web上的状态编程变为可能.HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的.非连续的.当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题.当一个客户在多个页面间切换时,服务器会保存该用户的信息.有四种方法可以实现会话跟踪技术:URL重写.隐藏表单域.Cookie.Session.1).隐藏表单域:<input type="hidden">,

Cookie&amp;Session会话跟踪技术

今日内容学习目标 可以响应给浏览器Cookie信息[response.addCookie()] 可以接受浏览器Cookie信息[request.getCookies()] [创建cookie,设置path和Age] 理解cookie的执行原理(重要) 可以对session的作用域数据进行操作:存放,获得,移除 理解session的执行原理(重要) 一,记录用户的上一次访问时间 当用户访问某些WEB应用时,经常会显示出上一次的访问时间.例如QQ登录成功后,会显示上一次的登录时间.通过本案例读者将学

会话跟踪(请教问题)

>为了在Web应用程序中能够唯一的标识用户,必须使用会话跟踪技术. >会话跟踪技术可以通过以下技术实现: 1)cookie技术:cookie是存储在客户端的一段文本信息,伴随着用户请求在客户端和服务器之间进行传递. 2)session技术:Web服务器为客户端开辟的一块存储空间,用来存放客户端状态信息. >cookie和session都能实现会话跟踪,但是二者的区别如下: 1)cookie是在客户端保存信息,session是在服务器保存信息. 2)cookie中只能保存字符串,sessi

会话跟踪Cookie与Session

会话跟踪用来跟踪用户的整个会话,常用的是Session和Cookie.Cookie通过客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 1.Cookie  1.1概念及使用方法 Cookie实际上是一小段文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来,当浏览器再请求该网站时,把请求的网址连同该Cookie一同交给服务器.服务器检查该Cookie,以此来辨认用户状

浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决办法

当浏览器禁用Cookies时,基于Cookie的会话跟踪机制就会失效,解决办法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候需要注意,为了保证会话跟踪的正确性,所有的链接和重定向语句中的URL都需要调用encodeURL()或encodeRedirectURL()方法进行编码.另外,由于附加在URL中的SessionID是动态产生的,对于每一个用户都是不同的,所欲对于静态页面的相互跳转,URL重写机制就无能为力了,但是,我们也可以通过将静态页面转换为动态页面来解决这个问题. 在w

四种会话跟踪技术,JSP的四种范围

这两个问题在网上搜答案是一样的,但是我的宝典里标明这是两个问题,有不同的答案,所以在这里注释一下. 四种会话跟踪技术 cookie,url重写,session,隐藏域 Cookie:服务器在一个应答首部传递给浏览器的名称/值对.浏览器保存的时间由cookie的过期时间属性来指定.当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie. 首次都是通过URL传递的,即在URL后跟一个ID标识.然后会判断客户端是否接受cookie,