第6讲第6讲基于Servlet的会话跟踪1练习基于Servlet的会话跟踪1练习回顾request、response对象有哪些常用方法?web.xml文件的作用?如何理解Servlet的生命周期?实现页面跳转有几种方式?它们之间有哪些区别?如何理解HTTP协议?request常用方法getParameter()getParameterValues()getRequestDispatcher()setCharacterEncoding()setAttribute()getAttribute()response常用的方法sendRedirect(url)setContentType("text/html;charset=gbk");本讲问题如何理解会话(session)?使用什么方法来获得HttpSession对象?本讲任务升级E-Book电子书店系统实现显示书籍列表点击书籍后显示书籍详细信息理解会话跟踪原理会获取session对象会使用session对象进行数据存取本讲目标HTTP协议1、HTTP协议有什么特点?无状态访问访问我刚刚被访问了两次,但是我不知道,是一个人访问了两次?还是两个人各访问一次我刚刚被访问了两次,但是我不知道,是一个人访问了两次?还是两个人各访问一次HTTP协议不记录用户的信息HTTP协议不记录用户的信息2、什么是无状态?HTTP是无状态协议(3-1)3、如何显示张三和李四分别访问某一网页多少次?请求请求响应响应张三李四为了区分用户,需要为不同用户作登记为了区分用户,需要为不同用户作登记HTTP是无状态协议(3-2)购买2个商品张三李四4、在线购物系统中如何对用户进行区分?购买3个商品一共购买了5个商品,钱应该从谁的帐户上扣呢?一共购买了5个商品,钱应该从谁的帐户上扣呢?HTTP是无状态协议(3-3)Web程序能不能像银行卡号那样,根据卡号锁定一个用户呢?Web程序能不能像银行卡号那样,根据卡号锁定一个用户呢?请求响应响应的时候,由服务器给我分配一个唯一ID号,这样就能区别不同的用户了响应的时候,由服务器给我分配一个唯一ID号,这样就能区别不同的用户了再次请求的时候,我带着ID号,告诉服务器“我是谁”再次请求的时候,我带着ID号,告诉服务器“我是谁”如何标识用户?会话跟踪(2-1)HttpSession对象服务器为每个会话创建一个HttpSession对象每个会话对象都有一个唯一的ID把用户的数据保存在相应的HttpSession对象内第一次请求响应服务器创建一个HttpSession对象并把该对象的ID返回给用户服务器创建一个HttpSession对象并把该对象的ID返回给用户同时,服务器在内存中开辟一空间,用来保存该对象数据同时,服务器在内存中开辟一空间,用来保存该对象数据把ID发送给客户端把ID发送给客户端第二次请求把ID一起发送给服务器根据ID号服务器寻找内存中相应的数据根据ID号服务器寻找内存中相应的数据会话跟踪(2-2)请求1请求2请求n…….什么是会话当前浏览器与服务器间多次的请求、响应关系,被称作一个会话使用会话的事例publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{HttpSessionsession=request.getSession(true);Objectcount=session.getAttribute("COUNTER");intcounter=0;if(count==null){counter=1;//将第一次计数存入sessionsession.setAttribute("COUNTER",newInteger(1));}else{counter=((Integer)count).intValue();counter++;//计数加一//将计数存入sessionsession.setAttribute("COUNTER",newInteger(counter));}}取出session对象内存储的值取出session对象内存储的值把数据存储在session对象内把数据存储在session对象内记录不同用户的访问次数演示示例1:网页计算Counter.java演示示例1:网页计算Counter.java获得session对象获得session对象会话的创建和使用publicHttpSessiongetSession();publicHttpSessiongetSession(booleanvalue);会话的创建使用HttpServletRequest的getSession()方法创建会话,语法如下:会话的使用使用HttpSession接口的方法,进行保存数据:取出数据:publicvoidsetAttribute(Stringparam,Objectvalue);publicObjectgetAttribute(Stringparam);获取session对象的方法getSession()getSession(booleanbool)getSession(true)truefalse返回与当前关联的会话,如果没有就创建后将其返回返回与当前关联的会话,如果没有就创建后将其返回返回与...