您好,欢迎访问三七文档
实验八会话管理一、实验目的1.了解Web服务器对客户跟踪的各种方法;2.重点掌握使用HttpSession对象跟踪会话的方法;3.掌握使用Cookie技术跟踪会话的方法;4.了解URL重写和隐藏表单域的方法。二、实验原理HTTP协议是无状态的协议。在很多情况下,Web服务器必须能够跟踪客户的状态。比如,对于一个购物网站,在一个时刻可能有多个客户购物,Web服务器必须能够区分不同的客户。一般情况下,Web服务器为每个客户配置了虚拟的购物车(ShoppingCart)。当某个客户请求将一个商品放入购物车时,Web服务器必须根据发出请求的客户的身份,找到该客户的购物车,然后把商品放入其中。Web服务器跟踪客户的状态通常有4种方法:(1)使用HttpSession对象管理会话;(2)使用持久的Cookie对象;(3)使用URL重写机制;(4)使用隐藏的表单域。三、实验内容与步骤(一)使用HttpSession对象管理会话。packagecom.demo;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importjava.util.Date;publicclassShowSessionextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/html);HttpSessionsession=request.getSession();Stringheading=null;IntegeraccessCount=(Integer)session.getAttribute(accessCount);if(accessCount==null){accessCount=newInteger(0);heading=Welcome,Newcomer;}else{heading=WelcomeBack.;accessCount=newInteger(accessCount.intValue()+1);}session.setAttribute(accessCount,accessCount);PrintWriterout=response.getWriter();out.println(htmlhead);out.println(titleSessionTrackingExample/title/head);out.println(bodycenter);out.println(h1+heading+/h1);out.println(h2Informationaboutyoursession./h2);out.println(tableborder='1');out.println(trbgcolor=\ffad00\thInfoTypethValue\n);out.println(trtdIDtd+session.getId()+\n);out.println(trtdCreationTime:td);out.println(+newDate(session.getCreationTime())+\n);out.println(trtdTimeoflastaccess:td);out.println(+newDate(session.getLastAccessedTime())+\n);out.println(trtdAccessnumber:td+accessCount+\n);out.println(/table/center/body/html);}}ShowSession程序的运行结果(二)使用Cookie跟踪会话使用Cookie跟踪会话涉及到向客户端写入Cookie和从客户端读取Cookie。【步骤1】向客户端写入Cookie对象packagetest;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassSendCookieextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{CookieuserCookie=newCookie(user,uid1234);userCookie.setMaxAge(60*60*24*7);response.addCookie(userCookie);response.setContentType(text/html);PrintWriterout=response.getWriter();out.println(htmltitleaddcookies/title);out.println(bodyh2+Acookiehasbeensenttobrower/h2/body);out.println(/html);}}访问上述Servlet将向客户端写入一个Cookie,执行后可查看客户机对应目录看是否写了一个文件。SendCookie程序的运行结果【步骤2】从客户端读取Cookie对象packagetest;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassGetCookieextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{StringcookieName=user;StringcookieValue=null;Cookie[]cookies=request.getCookies();if(cookies!=null){for(inti=0;icookies.length;i++){Cookiecookie=cookies[i];if(cookie.getName().equals(cookieName))cookieValue=cookie.getValue();}}response.setContentType(text/html);PrintWriterout=response.getWriter();out.println(htmltitlegetcookies/title);out.println(bodyh2Acookiehasbeengotfrombrower/h2);out.println(CookieName:+cookieName+br);out.println(CookieValue:+cookieValue+br);out.println(/body/html);}}GetCookie程序的运行结果四、思考题1.简述会话管理的常用方法有哪些?2.如何使用HttpSession对象共享数据?
本文标题:实验八--会话管理
链接地址:https://www.777doc.com/doc-4424134 .html