《实验五会话管理实验报告》由会员分享,可在线阅读,更多相关《实验五会话管理实验报告(7页珍藏版)》请在金锄头文库上搜索。
1、实验五 会话管理(实验报告)班级:网络111 姓名:李坤 学号:201106090117 一、实验目的1. 了解Web服务器对客户会话跟踪的各种方法;2. 重点掌握使用HttpSession对象跟踪会话的方法;3. 掌握使用Cookie技术跟踪会话的方法;4. 了解URL重写和隐藏表单域的方法。二、实验原理HTTP协议是无状态的协议。在很多情况下,Web服务器必须能够跟踪客户的状态。比如,对于一个购物网站,在一个时刻可能有多个客户购物,Web服务器必须能够区分不同的客户。一般情况下,Web服务器为每个客户配置了虚拟的购物车(ShoppingCart)。当某个客户请求将一个商品放入购物车时,We
2、b服务器必须根据发出请求的客户的身份,找到该客户的购物车,然后把商品放入其中。Web服务器跟踪客户的状态通常有4种方法:(1)使用HttpSession对象管理会话;(2)使用持久的Cookie对象;(3)使用URL重写机制;(4)使用隐藏的表单域。三、实验内容与步骤(一) 使用HttpSession对象管理会话。在名为ch05的Web项目下,创建一个名为ShowSessionInfo的Servlet。代码 import java.io.IOException;import java.io.PrintWriter;import java.sql.Date;import javax.servle
3、t.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class ShowSessionServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletRespo
4、nse response)throws ServletException, IOException response.setContentType(text/html;charset=gb2312);HttpSession session = request.getSession(true);String heading = null;String info=Information about your session;Integer accessCount = (Integer) session.getAttribute(accessCount);if(accessCount=null)ac
5、cessCount = new Integer(1);heading = Welcome,enter this page first time! ;elseheading = Welcome Back! ;accessCount = accessCount+1;session.setAttribute(accessCount,accessCount);PrintWriter out = response.getWriter();out.println();out.println( );out.println(+heading+ enter again + + +info+);out.print
6、ln();out.println(informatonvaluen);String state = session.isNew()?new session:old session;out.println(session state:+state+n);out.println(session ID:+session.getId()+n);out.println(create time:);out.println(+new Date(session.getCreationTime()+n);out.println(last access time:);out.println(+new Date(s
7、ession.getLastAccessedTime()+n); out.println(maxinactiveinterval:+session.getMaxInactiveInterval()+n);out.println(Cookie:+request.getHeader(Cookie)+n);out.println(access count:+accessCount+n);out.println();out.println( );out.println();结果(二)使用HttpSession会话对象设计一个GuessNumberServlet.java,实现简单的猜数游戏:代码imp
8、ort java.io.IOException;import java.io.PrintWriter;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class GuessNu
9、mberServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException int magic = new Random().nextInt(100)+1;HttpSession session = request.getSession();session.setAttribute(num,new Integer(magic);response.setContentType(text/
10、html;charset=gb2312);PrintWriter out = response.getWriter();out.println();out.println(Please guess a number,the number is between 0 and 100!);out.println( );out.println();out.println();out.println();out.println( );public void doPost(HttpServletRequest request, HttpServletResponse response)throws Ser
11、vletException, IOException int guess = Integer.parseInt(request.getParameter(guess);HttpSession session = request.getSession();int magic = (Integer)session.getAttribute(num);response.setContentType(text/html;charset=gb2312);PrintWriter out = response.getWriter();out.println();if(guess=magic)session.
12、invalidate();out.println(Congratulation,youre right! );out.println(Guess again );else if(guessmagic)out.println(Its too little,please try again! );elseout.println(Its too large,please try again! );out.println( );out.println();out.println();out.println();out.println( );结果(三) 编写一个CheckUserServlet,通过Cookie实现自动登录的功能。(参考程序4.5) (四)使用Cookie跟踪会话,与实验3要求类似,尝试用JSP实现。1)编写cookieTest.jsp页面:首先从客户端读取Cookies,判断是否其中包含了名为“mrCookie”的cookie,如果存在,从该cookie值中取出用户名和用户的登录时间,显示欢迎信息;如果该cookie不存在,显示用户登录的表