好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实验五会话管理.pdf

5页
  • 卖家[上传人]:飞***
  • 文档编号:54035440
  • 上传时间:2018-09-07
  • 文档格式:PDF
  • 文档大小:116.82KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 开课实验室:学院应用技术学院年级、专业、班计应 1301 姓名焦强成绩课程名称JavaWeb 从入门到精通实验项目名称会话管理指导教师段琦一、实验目的1. 了解 Web 服务器对客户跟踪的各种方法;2. 重点掌握使用HttpSession 对象跟踪会话的方法;3. 掌握使用Cookie 技术跟踪会话的方法;4. 了解 URL 重写和隐藏表单域的方法二、实验环境安装有 Eclipse for Java EE developer 的电脑配置好TomCat 服务器三、实验原理HTTP 协议是无状态的协议在很多情况下, Web 服务器必须能够跟踪客户的状态比如,对于 一个购物网站,在一个时刻可能有多个客户购物,Web 服务器必须能够区分不同的客户一般情况下, Web 服务器为每个客户配置了虚拟的购物车(ShoppingCart)当某个客户请求将一个商品放入购物车时,Web 服务器必须根据发出请求的客户的身份,找到该客户的购物车,然后把商品放入其中Web 服务器跟踪客户的状态通常有4 种方法:使用 HttpSession 对象管理会话;使用持久的Cookie 对象;使用 URL 重写机制; ④使用隐藏的表单域。

      四、实验步骤1. 使用 HttpSession 对象管理会话代码如下package com.demo; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class ShowSession extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(“text/html“); HttpSession session = request.getsession(); ; String heading =null; Integer accessCount = (Integer)session.getAttribute(“accessCount“); if(accessCount==null){ accessCount = new Integer(0); heading = “Welcome, Newcomer“; }else{ heading = “Welcome Back.“; accessCount = new Integer(accessCount.intValue()+1); } session.setAttribute(“accessCount“,accessCount); PrintWriter out = response.getWriter(); out.println(““); out.println(“Session Tracking Example“); out.println(““); out.println(““+heading+““); out.println(“Information about your session.“); out.println(““); out.println(“Info TypeValue\n“); out.println(“ID“+session.getId()+“\n“); out.println(“Creation Time:“); out.println(““+new Date(session.getCreationTime())+“\n“); out.println(“Time of last access:“); out.println(““+new Date(session.getLastAccessedTime())+“\n“); out.println(“Access number:“+accessCount+“\n“); out.println(““); } } 编写并运行下面的猜数游戏的Servlet。

      请仔细阅读并理解程序代码package com.demo; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.WebServlet; @WebServlet(“/GuessNumberServlet“) public class GuessNumberServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int magic = (int)(Math.random()*101); HttpSession session = request.getSession(); session.setAttribute(“num“,new Integer(magic)); response.setContentType(“text/html;charset=utf-8“); PrintWriter out = response.getWriter(); out.println(““); out.println(“我想出一个0 到 100 之间的数,请你猜!“); out.println(““); out.println(““); out.println(““); out.println(““); out.println(““); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int guess = Integer.parseInt(request.getParameter(“guess“)); HttpSession session = request.getSession(); int magic = (Integer)session.getAttribute(“num“); response.setContentType(“text/html;charset=utf-8“); PrintWriter out = response.getWriter(); out.println(““); if(guess==magic){ session.invalidate(); // 销毁会话对象out.println(“祝贺你,答对了!“); out.println(“ 再猜一次 .“); }else if(guess>magic){ out.println(“太大了 ! 请重猜 !“); }else{ out.println(“太小了 ! 请重猜 !“); } out.println(““); out.println(““); out.println(““); out.println(““); out.println(““); } } 使用 Cookie 跟踪会话涉及到向客户端写入Cookie 和从客户端读取Cookie。

      代码如下:package test; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SendCookie extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{ Cookie userCookie = new Cookie(“user“, “uid1234“); userCookie. setMaxAge(60*60*24*7); response.addCookie(userCookie); response.setContentType(“text/html“); PrintWriter out=response.getWriter(); out.println(“add cookies“); out.println(““+ “A cookie has been sent to browser“); out.println(““); } } 从客户端读取Cookie 对象package test; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class GetCookie extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{ String cookieName = “user“; String cookieValue = null; Cookie[] cookies = request.getCookies(); if (cookies!=null){ for(int i = 0;iget cookies“); out.println(“A cookie has been got from brower“); out.println(“CookieName:“+cookieName+““); out.println(“CookieValue:“+cookieValue+““); out.println(““); } } 管理会话运行结果客户端读取Cookie 对象结果猜数游戏的 Servlet 结果五、实验结果及总结问题 1 有 4 种方法使用Servlet API的 Session 机制;使用持久的Cookie 对象;使用URL重写机制;使用隐藏的表单域。

      问题 2: Public void setAttribute(String name,Object value)j将一个指定名称和值的属性绑定到会话对 象 上 , Public void getAttribute(String name)返 回 绑 定 到 会 话 上 的 指 定 名 称 属 性 值 ,Public void Enumeratinon getAttributeName()返回所用绑定到会话上的属性名的Enumeratinon 对象, Public void removeAttribute(String name,)从会话中删除绑定的指定名称的属性。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.