java_web_4-跟踪客户状态_第1页
java_web_4-跟踪客户状态_第2页
java_web_4-跟踪客户状态_第3页
java_web_4-跟踪客户状态_第4页
java_web_4-跟踪客户状态_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java WebJava Web开发开发第四课第四课 跟踪客户状态跟踪客户状态讲师:李玉明讲师:李玉明目标l掌握cookie技术l掌握会话跟踪技术l掌握URL重写技术l了解隐藏表单技术跟踪客户状态l用Cookie来传送用于跟踪客户状态的数据;l使用会话(Session)机制;l重写URL,使它包含用于跟踪客户状态的数据;l在HTML表单中加入隐藏字段,它包含用于跟踪客户状态的数据。CookielCookie是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息。服务器可以根据cookie来跟踪客户状态,对于需要区别客户的场合(如电子商务)特别有用。lTomcat对Cookie提供了良好的

2、支持;l写cookie:Cookie theCookie=new Cookie(“username”,”Tom”);response.addCookie(theCookie);l读cookie:Cookie cookies=request.getCookies();Cookie的有效期l当Servlet向客户端写Cookie时,可以通过Cookie类的setMaxAge(int expiry)方法来设置Cookie的有效期,单位:秒如果expiry大于零,就指示浏览器在客户端硬盘上保存Cookie的时间为expiry秒;如果expiry等于零,就指示浏览器删除当前Cookie;如果expiry

3、小于零,就指示浏览器不要把Cookie保存到客户端硬盘,Cookie仅仅存在于当前的浏览器进程中,当浏览器进程关闭,Cookie也就消失。Cookie默认有效期为-1.CookieServlet.javapublic class CookieServlet extends HttpServlet int count=0;public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException response.setContentType(text

4、/plain);PrintWriter out = response.getWriter();/获取cookieCookie cookies=request.getCookies();if(cookies!=null)for(int i=0;icookies.length;i+)out.println(Cookie name:+cookiesi.getName();out.println(Cookie name:+cookiesi.getValue();out.println(Cookie name:+cookiesi.getMaxAge()+rn);elseout.println(No Co

5、okie.);/写入cookieresponse.addCookie(new Cookie(cookieName+count,cookieValue+count);count+;Web.xml内容 cookie lesson3.CookieServlet cookie /cookie 新浏览器进程public class Cookie1Servlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOEx

6、ception Cookie cookie=null;response.setContentType(text/plain);PrintWriter out = response.getWriter();/获取cookieCookie cookies=request.getCookies();if(cookies!=null)for(int i=0;icookies.length;i+)out.println(Cookie name:+cookiesi.getName();out.println(Cookie name:+cookiesi.getValue();if(cookiesi.getN

7、ame().equals(username)cookie=cookiesi;elseout.println(No Cookie.);if(cookie=null)cookie=new Cookie(username,Tom);cookie.setMaxAge(60*60);response.addCookie(cookie);else if(cookie.getValue().equals(Tom)cookie.setValue(Jack);response.addCookie(cookie);else if(cookie.getValue().equals(Jack)cookie.setMa

8、xAge(0);response.addCookie(cookie);Web.xml内容 cookie1 lesson3.Cookie1Servlet cookie1 /cookie1 Session l会话指在一段时间内,单个客户与Web应用的一连串相关的交互过程。在一个会话中,客户可能会多次请求访问Web应用的同一个网页,也有可能请求访问同一个Web应用中的多个网页;l在Servlet API中定义了代表会话的javax.servlet.http.HttpSession接口,Servlet容器必须实现这一接口;l当一个会话开始时,Servlet容器将创建一个HttpSession对象,在该

9、对象中存放表示客户状态的信息,Servlet容器为每个HttpSession对象分配一个唯一标示符,称为Session ID。Sessionl默认情况下,JSP网页都支持会话,显示声明:l如果一个Web组件支持会话,表示:当客户请求访问该组件时,Servelet容器会自动查找HTTP请求中表示SessionID的Cookie,以及向HTTP响应结果中添加表示SessionID的Cookie;Web组件可以访问代表当前会话的Httpsession对象。%Cookie cookies=request.getCookies();if(cookies=null)out.println(no cooki

10、e);return;for(int i=0;iCookie name:Cookie value:max age in seconds:HttpSession的生命周期l开始新的会话,即开始新的会话,即Servlet容器创建一个新的容器创建一个新的HttpSession对象:对象:一个浏览器进程第一次访问一个浏览器进程第一次访问Web应用中支持会话的任意一个网页。应用中支持会话的任意一个网页。当浏览器进程与当浏览器进程与Web应用的一次会话被销毁后,再次访问应用的一次会话被销毁后,再次访问Web应用中支应用中支持会话的任意一个网页。持会话的任意一个网页。l会话销毁,即会话销毁,即Servlet容

11、器使容器使HttpSession对象结束生命周期,且存对象结束生命周期,且存放在会话范围内的共享数据也都被销毁:放在会话范围内的共享数据也都被销毁:浏览器进程终止;浏览器进程终止;服务器端执行服务器端执行httpSession对象的对象的invalidate()方法;()方法;会话过期。会话过期。使用会话的jsplServlet容器为JSP提供了隐含的HttpSession对象,JSP可以直接通过固定引用变量session来引用HttpSession对象。maillogin.jspmaillogin欢迎光临邮件系统Session ID:User Name:input type=text nam

12、e=username value=Password: mailcheck.jspmailcheck登录注销当前用户为:你的信箱中有10封邮件maillogout.jspmaillogout,再见!重新登录邮件系统使用会话的ServletlHttpServlet默认不支持会话;l在HttpRequest接口中提供了2种与会话相关的方法:getSession():是当前HttpServlet支持会话。若会话已存在,返回相应的httpSession对象,否则创建一个新的对象并返回。getSession(boolean create):如果为true,等价于方法1;如果为false,

13、若会话已存在,返回相应的httpSession对象,否则返回null。public class ShoppingCart implements Serializable Mapitems = new HashMap();int numberOfItems=0;public synchronized void add(String itemName)if(items.containsKey(itemName)Integer itemCount=(Integer)items.get(itemName);items.put(itemName, new Integer(itemCount+1);els

14、e items.put(itemName, new Integer(1);numberOfItems+;public synchronized int getNumberOfItems()return numberOfItems;public synchronized Map getItems()return items;public class ShoppingServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletE

15、xception, IOException String itemNames=彩电,冰箱,电视机;/获取httpsession对象HttpSession session = request.getSession(true);ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);if(cart=null)cart = new ShoppingCart();session.setAttribute(cart, cart);response.setContentType(text/html;charset=GB2312);Print

16、Writer out = response.getWriter();/读取表单数据String itemSelected;String itemIndex;/商品索引String itemName;/商品名称itemSelected=request.getParameterValues(item);/读取界面复选框值if(itemSelected!=null)for(int i=0;i续/输出out.println(购物车内容);out.println(SessionID:+session.getId()+);out.println(你的购物车有+cart.getNumberOfItems()

17、+个商品:);Map items=cart.getItems();IteratorMap.Entry it=items.entrySet().iterator();while(it.hasNext()Map.Entry entry=it.next();out.println(entry.getKey()+: +entry.getValue()+);out.println(继续购物);out.println();out.close();public void doPost(HttpServletRequest request,HttpServletResponse response)throws

18、 ServletException, IOException doGet(request,response);Web.xml增加内容 shopping lesson4.ShoppingServlet shopping /shopping shopping.html选购商品百货商场选购商品第一种:彩电第二种:冰箱第三种:电视机重写URLqURL(统一资源定位) 重写技术 当客户端不接受Cookie的时候,可以使用URL重写机制将一个唯一的会话 ID 添加到 URL 结尾,以标识该会话。Servlet容器解释URL,取出SessionID,根据SessionID将请求与特定的Session关联。重写URLl浏览器禁用远程Cookie:隐私高级重写URLl浏览器禁用本地服务器Cookie:安全本地重写URLl如果浏览器不支持cookie,Servlet容器可以重写Web组件的URL,把sessionID添加到URL信息中。lHttpServletResponse提供了重写URL的方法:public String encodeURL(String

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论