1:什么是会话

通俗来说就是客户和服务器的一次私密谈话,客户发送请求以后服务器能够识别请求是来自同一个客户,他们是1对1的关系。

了解会话以后我们就要去考虑如何去实现这些问题下面一一进行解析

2:会话的跟踪

2.1:用cookies进行会话跟踪

竟然服务器能别识别不同的用户,但是他是如何识别的呢,这里就说到了SessionId,它是Session的唯一识别,保存在cookies中存放于本地硬盘里面,每次客户请求的时候会把SessionId一起传给服务器,那么服务器就能根据SessionId来识别Session。那么下面我们用代码来演示Session的运行方式

第一步:我们先写一个LoginServlet类

 

  1 public class LoginServlet extends HttpServlet {
  2     private static final long serialVersionUID = 1L;
  3 
  4     /**
  5      * @see HttpServlet#HttpServlet()
  6      */
  7     public LoginServlet() {
  8         super();
  9     }
 10 
 11     /**
 12      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 13      */
 14     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 15         response.setContentType("text/html;charset=gb2312");
 16         HttpSession session=request.getSession();
 17         String userName=(String)session.getAttribute("username");
 18 
 19         PrintWriter out =response.getWriter();
 20         out.println("<html>");
 21         out.println("<meta http-equiv=\"pragma\" content=\"no-cache\">");
 22         out.println("<head><title>登录页面</title></head>");
 23         out.println("<body>");
 24 
 25         printSessionInfo(out, session);
 26         out.println("<p>");
 27         out.println("<form action=loginchk method=post>");
 28         out.println("<table>");
 29         out.println("<tr>");
 30         out.println("<td>请输入用户名:</td>");
 31         if(userName==null)
 32         {
 33             out.println("<td><input type=text name=username></td>");
 34         }
 35         else {
 36             out.println("<td><input type=text name=username value="+userName+"></td>");
 37         }
 38         out.println("</tr>");
 39 
 40         out.println("<tr>");
 41         out.println("<td>请输入密码:</td>");
 42         out.println("<td><input type=password name=password></td>");
 43         out.println("</tr>");
 44 
 45         out.println("<tr>");
 46         out.println("<td><input type=reset value=重填></td>");
 47         out.println("<td><input type=submit value=登录></td>");
 48         out.println("</tr>");
 49 
 50         out.println("</table>");
 51         out.println("</form>");
 52         out.println("</body>");
 53         out.println("</html>");
 54     }
 55 
 56     /**
 57      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 58      */
 59     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 60         doGet(request, response);
 61     }
 62     /**
 63      * 打印与session相关的信息
 64      * @param out
 65      * @param session
 66      */
 67     public void printSessionInfo(PrintWriter out,HttpSession session)
 68     {
 69         out.println("<table>");
 70         out.println("<tr>");
 71         out.println("<td>会话的状态:</td>");
 72         if(session.isNew())
 73         {
 74             out.println("<td>新的会话</td>");
 75         }
 76         else {
 77             out.println("<td>旧的会话</td>");
 78         }
 79         out.println("</tr>");
 80 
 81         out.println("<tr>");
 82         out.println("<td>会话ID:</td>");
 83         out.println("<td>"+session.getId()+"</td>");
 84         out.println("</tr>");
 85 
 86         out.println("<tr>");
 87         out.println("<td>创建时间:</td>");
 88         out.println("<td>"+new Date(session.getCreationTime())+"</td>");
 89         out.println("</tr>");
 90 
 91         out.println("<tr>");
 92         out.println("<td>上次访问时间:</td>");
 93         out.println("<td>"+new Date(session.getLastAccessedTime())+"</td>");
 94         out.println("</tr>");
 95 
 96         out.println("<tr>");
 97         out.println("<td>最大不活动时间间隔:</td>");
 98         out.println("<td>"+session.getMaxInactiveInterval()+"</td>");
 99         out.println("</tr>");
100         out.println("</table>");
101     }
LoginServlet

相关文章:

  • 2021-04-24
  • 2021-07-19
  • 2021-12-28
  • 2021-05-15
  • 2021-09-16
  • 2021-12-01
猜你喜欢
  • 2021-05-23
  • 2022-01-21
  • 2022-01-07
  • 2021-09-11
  • 2021-07-07
  • 2021-07-23
  • 2021-08-23
相关资源
相似解决方案