收藏 分销(赏)

实验5-会话管理.doc

上传人:人****来 文档编号:4117912 上传时间:2024-07-30 格式:DOC 页数:5 大小:32.54KB
下载 相关 举报
实验5-会话管理.doc_第1页
第1页 / 共5页
实验5-会话管理.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
实验五 会话管理 一、实验目的 1。 了解Web服务器对客户跟踪的各种方法; 2. 重点掌握使用HttpSession对象跟踪会话的方法; 3。 掌握使用Cookie技术跟踪会话的方法; 4。 了解URL重写和隐藏表单域的方法。 二、实验原理 HTTP协议是无状态的协议.在很多情况下,Web服务器必须能够跟踪客户的状态。比如,对于一个购物网站,在一个时刻可能有多个客户购物,Web服务器必须能够区分不同的客户.一般情况下,Web服务器为每个客户配置了虚拟的购物车(ShoppingCart)。当某个客户请求将一个商品放入购物车时,Web服务器必须根据发出请求的客户的身份,找到该客户的购物车,然后把商品放入其中。 Web服务器跟踪客户的状态通常有4种方法: (1)使用HttpSession对象管理会话;(2)使用持久的Cookie对象;(3)使用URL重写机制;(4)使用隐藏的表单域。 三、实验内容与步骤 (一) 使用HttpSession对象管理会话。 【步骤1】建立Servlet对象,代码如下: package cn。edu.session.servlet; import java。io。IOException; import java。io。PrintWriter; 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 LoginServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request。setCharacterEncoding("utf—8"); response。setContentType("text/html;charset=utf-8”); String username = request。getParameter(”username”); if(username。equalsIgnoreCase(”zhangsan”)) { response.getWriter()。print("用户名或密码错误!"); } else { HttpSession session = request.getSession(); session.setAttribute(”username”, username); response.sendRedirect("/prac05_session/index1。jsp”); } } } 【步骤2】修改web。xml文件,添加代码如下: 〈servlet〉 〈servlet—name〉LoginServlet〈/servlet-name〉 〈servlet—class>cn。edu。session.servlet。LoginServlet〈/servlet—class〉 </servlet〉 【步骤3】新建login.jsp页面,代码如下: <%@ page language="java” import=”java。util。*” pageEncoding=”UTF—8”%〉 <!DOCTYPE HTML PUBLIC "—//W3C//DTD HTML 4.01 Transitional//EN"> <html〉 <head〉 〈title〉login。jsp〈/title> 〈/head> <body〉 〈h1〉login.jsp〈/h1> 〈hr/> <form action=”/prac05_session/sessionLoginServlet” method="post”〉 用户名:<input type=”text” name=”username” /〉<br/〉 〈input type=”submit” value=”Submit"/〉 〈/form〉 〈/body〉 〈/html〉 【步骤4】新建index1.jsp页面,代码如下: 〈%@ page language=”java” import=”java。util。*” pageEncoding=”UTF—8”%〉 <!DOCTYPE HTML PUBLIC "—//W3C//DTD HTML 4。01 Transitional//EN”> 〈html〉 〈head〉 <title>index1。jsp</title〉 〈/head〉 〈body〉 〈h1〉index1。jsp</h1> 〈% String username = (String)session。getAttribute(”username”); if(username == null) { out。print("您还没有登录!"); } else { out。print(”用户名:” + username); } %〉 〈hr/> 〈a href="/prac05_session/index2.jsp”>index2</a> </body〉 〈/html〉 【步骤5】新建index2。jsp页面,代码如下: 〈%@ page language=”java" import="java。util.*” pageEncoding=”UTF—8"%〉 〈!DOCTYPE HTML PUBLIC "—//W3C//DTD HTML 4。01 Transitional//EN”> <html> 〈head> 〈title〉index2。jsp</title〉 </head> 〈body〉 〈h1〉index2。jsp〈/h1> 〈% String username = (String)session.getAttribute(”username”); if(username == null) { out。print("您还没有登录!”); } else { out。print("用户名:" + username); } %〉 <hr/〉 〈a href=”/prac05_session/index1.jsp”〉index1〈/a〉 〈/body> </html〉 图5。1 login。jsp页面 图5。2 重定向后页面 (二)使用Cookie跟踪会话 使用Cookie跟踪会话涉及到向客户端写入Cookie和从客户端读取Cookie。 注意UUID的用法。 【步骤1】向客户端写入Cookie对象 package cn.edu。cookie; import java.io。IOException; import java.io。PrintWriter; import java.util。UUID; import javax。servlet。ServletException; import javax。servlet.http。Cookie; import javax。servlet。http。HttpServlet; import javax.servlet。http。HttpServletRequest; import javax。servlet。http.HttpServletResponse; public class AddCookie extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response。setContentType(”text/html;charset=utf—8”); String id = UUID.randomUUID()。toString();// 生成一个随机字符串 Cookie cookie = new Cookie("id", id);// 创建Cookie对象,指定名字和值 response。addCookie(cookie);// 在响应中添加Cookie对象 response.getWriter()。print(”已经给你发送了ID"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 访问上述Servlet将向客户端写入一个Cookie,执行后可查看客户机对应目录看是否写了一个文件. 图5.3SendCookie程序的运行结果 【步骤2】从客户端读取Cookie对象 package cn。edu.cookie; import java。io。IOException; import java。io。PrintWriter; import javax。servlet。ServletException; import javax。servlet。http。Cookie; import javax。servlet.http。HttpServlet; import javax.servlet。http.HttpServletRequest; import javax.servlet.http。HttpServletResponse; public class GetCookie extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response。setContentType("text/html;charset=utf-8”); Cookie[] cs = request。getCookies();//获取请求中的Cookie if(cs != null) {//如果请求中存在Cookie for(Cookie c : cs) {//遍历所有Cookie if(c。getName()。equals("id”)) {//获取Cookie名字,如果Cookie名字是id response.getWriter()。print(”您的ID是:” + c。getValue());//打印Cookie值 } } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } } 图5。4 GetCookie程序的运行结果 四、思考题 1。 简述会话管理的常用方法有哪些? 答:使用Servlet API的Session机制,使用持久的Cookie对象,使用URL重写机制,使用隐藏的表单域。 2。 如何使用HttpSession对象共享数据? 答: Public void setAttribute(String name,Object value)j将一个指定名称和值的属性绑定到会话对象上,Public void getAttribute(String name)返回绑定到会话上的指定名称属性值,Public void Enumeratinon getAttributeName()返回所用绑定到会话上的属性名的Enumeratinon对象,Public void removeAttribute(String name,)从会话中删除绑定的指定名称的属性。 五、实验总结 本次实验主要是使我们了解Web服务器对客户跟踪的各种方法,掌握使用HttpSession对象跟踪会话的方法以及使用Cookie技术跟踪会话的方法和了解URL重写和隐藏表单域的方法等,相信掌握了这部分知识对以后的学习也会于很大帮助。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服