`
yx1989
  • 浏览: 11054 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
社区版块
存档分类
最新评论

day06-会话与状态

 
阅读更多

通过Cookie显示上次访问时间:
     1.获取cookie,如果存在则显示上次访问时间
     2.回送本次访问时间。
通过cookie.setMaxAge(0)可以删除cookie,注意,删除cookie时,path必须一致,否则不会删除

Cookie实例,实现浏览记录:
1.创建模拟数据库的类,并用Map存入数据。
2.创建Book类,里边有若干属性,并有get set方法。
3.在代表网站首页的页面,输出网站所有产品。产品名设置为超链接,并将产品id号作为参数附在超链接的后边。
4.在点击上述超链接后,跳转到显示商品详细信息的页面。根据id号显示商品,并构建用户曾经看过的商品的cookie。
5.构建cookie的过程分为4中情况,分别处理。

Session
session的工作是基于cookie的。session会把id号回写给cookie。这个cookie是会话级别的。
如果要解决类似关闭浏览器购物车中商品信息不丢失等问题的话,可以自己构造一个包含sessionid的cookie,并设置个小于三十分钟的生命周期,发给response。
代码如下:
     Cookie cookie = new Cookie("JSESSIONID", session.getId());
     cookie.setMaxAge(1800);
     response.addCookie(cookie);

简易购物车案例:
首页servlet:
     1.创建模拟数据库的类,并用Map存入数据。
     2.创建Book类,里边有若干属性,并有get set方法。
     3.在代表网站首页的页面,输出网站所有产品。产品名设置为超链接,并将产品id号作为参数附在超链接的后边。
     4.点击上述链接后跳转到购买servlet。
购买servlet:
     1.得到用户要买的商品id号。 
     2.得到用户用于保存所有商品的集合(购物车),加入新的商品后重新存入session。
     3.手工回送seeion的cookie。
     4.跳转到购物车页面
购物车servlet:
     1.获取到seeion里保存的购物信息。并显示。

解决用户禁用cookie的问题:
     重写超链接即在超链接后加上sessionid。Java中含有了可以自动重写超链接的方法。encodeURL,这个方法可以自动判断是否需要重写超链接,如果用户没有禁用cookie也就是说不需要重写超链接,则链接不会改变。还有专门用来重写重定向链接的encodeRedirectURL。
     重写超链接需要注意的问题:一定要先获取到session才能进行超链接重写。

session实例:用户登录
判断用户名和密码是否匹配,如果匹配则把user对象存入到session,跳转到首页后显示欢迎该用户。
否则显示用户名或密码不正确。

Session实例,防止重复提交:
重复提交的情景:
     1.刷新。浏览器刷新的意义。重新请求,把干过的事情重干一遍
     2.后退后再次点击。
     3.多次点击。
javascript防重复提交:设置一个标记提交过了的变量,如果已经提交过了,则不再次提交
     javascript防重复提交存在的问题:javascript 防重复提交,不能防刷新,和后退。并且只能防君子不能防小人。虽然防不死还是要写,因为可以减轻服务器压力。并且用户体验好。
Session防止重复提交的原理。将一个随机数写到表单的hidden属性并保存到session里。比对request请求中的随机数,若是跟session中的随机数匹配,处理请求,并立即三处session里的随机数。若不相同则不作响应。


使用md5算法获取md5字节数组后不能直接用来构造String,因为md5字节数组的1010可能跟默认的编码不同,从而产生乱码。
可用解决方案,查表法和Base64算法。
也可以直接生成uuid。

什么情况用什么域:
用完就没用了就用request。如mvc中从servlet向jsp转发。
用完了,一会还要用,就用session。如购物车
数据用完了,一会不仅要给这个用户用,还要给别人看。就用severletcontent。如:聊天室
注意:能用小的,就不要用大的。

运行时异常 出了异常一定要让上层程序知道,但又不能直接抛出编译时异常。抛出运行时异常抛出。
抛到跟用户交互的地方就不能再抛了。这个时候捕获异常,提示用户出错,并记录异常。

什么叫做一个会话。只要是基于当前窗口弹出的所有窗口,标签页都是一个会话。
两个会话共享session和关闭窗口后再开一样。
分享到:
评论

相关推荐

    崔希凡javaweb笔记day18-day23

    4. **会话管理**(day21):在JavaWeb开发中,会话管理是保持用户状态的关键。day21可能会涵盖`HttpSession`对象的使用,包括创建、获取、销毁会话,以及会话超时和会话固定攻击的防范。 5. **过滤器和监听器**...

    崔希凡JavaWeb视频教程_day19-资料源码

    4. **监听器(Listeners)**:监听器用于监听特定的事件,比如会话开始、结束,或者某个对象的创建和销毁。理解监听器可以帮助我们更好地管理Web应用的状态。在教程中,崔希凡可能会介绍常见的监听器接口,如...

    day09-Request&Response.zip

    2. **请求头部**: 包含多个键值对,如User-Agent表示客户端信息,Accept表示客户端可接受的数据类型,Cookie用于携带会话信息。 3. **空行**: 请求头和请求主体之间的一个空行。 4. **请求主体**: POST请求中,...

    day02-SpringCloud02

    Spring Cloud是Java开发者广泛使用的工具,用于构建分布式系统中的服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等多种功能。在这个阶段,我们重点...

    崔希凡javaweb笔记day14-day17

    此外,他还可能讨论了会话跟踪与cookie的区别和联系。 最后,Day17的笔记可能涵盖了MVC(Model-View-Controller)设计模式。这是JavaWeb开发中常见的架构模式,用于分离业务逻辑、数据模型和用户界面。崔老师可能会...

    高级软件人才培训专家-day12-SpringBootWeb 登录认证

    ### 高级软件人才培训专家-day12-SpringBootWeb 登录认证 #### 知识点概述 本课程主要讲解了如何在Spring Boot Web项目中实现登录认证功能,包括登录功能的设计与实现、登录校验机制及异常处理等内容。特别强调了...

    day01-SpringCloud01

    Spring Cloud基于Spring Boot,为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的开发工具,帮助开发者快速...

    JavaWeb视频教程_day22-资料源码

    9. **EJB(Enterprise JavaBeans)**:虽然EJB主要用于企业级应用,但在Day22的高级部分,可能会提到EJB的角色,如会话bean、消息驱动bean和实体bean,以及如何在JavaEE环境中使用它们。 10. **Web服务**:JavaWeb...

    [HeyJava][传智播客]BBS-day002-004.rar

    5. **会话管理**:为了实现用户登录状态的保持,需要掌握会话管理机制,如Cookie和Session的使用。 6. **安全编程**:包括用户输入验证,防止SQL注入,XSS攻击等,确保BBS系统的安全性。 7. **多线程**:对于高...

    DAY04-CODE-04-PM17-PROJECT-USER-INFO-WEB_famoustah_商城_

    在本项目"DAY04-CODE-04-PM17-PROJECT-USER-INFO-WEB_famoustah_商城_"中,我们聚焦于构建一个完整的电商应用,涵盖了用户管理、商品管理、订单管理和购物车的模拟支付等功能。这是一个典型的Web应用程序开发案例,...

    day08-HTTP&Tomcat&Servlet.zip

    常见的HTTP请求方法有GET、POST、PUT、DELETE等,而响应状态码如200(成功)、404(未找到)和500(服务器内部错误)则反映了请求处理的结果。 其次,Tomcat是一个开源的Java Servlet容器,由Apache软件基金会的...

    高级软件人才培训专家-day12-SpringBootWeb登录认证

    ### 高级软件人才培训专家-day12-SpringBootWeb登录认证 #### 一、登录认证功能概述 在本节课程中,我们将深入探讨如何在Spring Boot Web应用中实现一个安全可靠的登录认证功能。通过本课程的学习,学员将能够掌握...

    崔希凡Javaweb视频教程_day24~day26-资料源码,完整版(网上书城或bookstore)

    崔希凡可能教学生如何使用session来保持用户的登录状态,以及如何处理会话超时和会话劫持等问题。 7. **请求分发与转发**:通过Servlet的doGet和doPost方法,崔老师会介绍如何处理HTTP请求,并利用...

    day04-Tomcat&Servlet入门-代码.zip

    6. **会话管理**:Servlet可以通过`HttpServletRequest`的`getSession()`方法获取或创建HttpSession对象,用于跟踪用户的会话状态。 【压缩包子文件的文件名称列表】: "代码" 这个"代码"可能是包含示例Servlet代码...

    高级软件人才培训专家-day04-SpringBootWeb入门

    - 无状态协议: 即 HTTP 协议本身不具备保存会话信息的能力。这意味着服务器无法直接存储关于客户端的信息,除非使用 Cookie 或 Session。 #### 3.2 HTTP 请求协议 - **格式**: 包括请求行、请求头、请求体三部分...

    day08-HTTP&Tomcat&Servlet

    * 会话技术(Cookie、Session):解决 HTTP 协议无状态的问题。 * Filter(过滤器):对请求和响应进行过滤。 * Listener(监听器):监听 Servlet 容器的生命周期。 * Ajax、Vue、ElementUI:都是前端技术栈,用于...

    JavaWeb崔希凡老师视频教程_day28-资料源码.zip

    这两种机制在保持用户状态和实现会话管理上起着关键作用。他会解释它们的工作原理,以及何时选择session,何时使用cookie,并给出实际应用场景。 最后,我们可能会接触到过滤器(Filter)和监听器(Listener)的...

    flink1.12入门到精通视频课程

    共课程包含9个章节:Flink安装部署与快速入门、Flink批处理API、Flink流处理API、Flink高级API、Flink-Table与SQL、Flink-Action综合练习、Flink-高级特性和新特性、Flink多语言开发、Flink性能调优 课程目录: ...

    day10-RocketMQ集群、分布式WebSocket实现以及地图找房功能实现.zip

    此外,考虑到分布式环境,可能还需要了解如何在多个服务器之间共享会话状态,以确保用户连接的平滑迁移。 最后,地图找房功能的实现涉及到地理信息系统(GIS)和Web前端技术的结合。这通常包括集成地图API,如...

    968389475012218day08-HTTP&Tomcat&Servlet.zip

    客户端保存这个标识,之后的请求都会携带此标识,以便Tomcat识别并维持会话状态。 此外,Tomcat还支持集群和负载均衡,可以在多个服务器间分发请求,提高系统的可用性和性能。在大型企业级应用中,常常会结合使用...

Global site tag (gtag.js) - Google Analytics