JavaWeb - Cookie&Session

2018-07-23  本文已影响3人  sunboximeng

jsp+ajax = 使html页面中的元素可以单独接受响应、发送请求。

数据在前端、Servlet、数据库之间传递,经历转换:
map(提交的表单)映射为对象,用的是BeanUtils工具类。
表数据映射为对象,用的是JdbcTemplate中的RowMapper
JSON数据映射为对象,用的是ObjectMapper

动态代理 = 反射(回调时使用) + 单层嵌套。
装饰者模式 = 多层嵌套(可以灵活组合,但是要定义很多个类)。

弥补HTTP协议无记忆的缺点:cookie(自己记)和session(服务器记)。
Cookie就是由服务器发给客户端的信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
cookie就是请求头中的一个字段。也可以被持久化储存到文件中。典型应用:记忆用户名和密码。

Session对象中保存的也是键值对,通过getAttribute(Stringkey)和setAttribute(String key,Objectvalue)方法读写客户状态信息。
两个对象都可以用来记录用户的上一次登陆时间。但两个对象的创建方式是不一样的。

键值对就能起到一个数据库的作用。NoSQL就是键值对数据库!

Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的:session的id值需要保存在cookie中。因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。解决的办法是把id值放在URL中。

Cookie

cookie就是http请求头中的一个字段。可以用来保存客户端上的数据,以便服务器使用。弥补了http请求无记忆的缺点。

案例:普通用户自动登录。3分钟之内不需要重新登录。

Session

客户端浏览器可以禁用cookie,于是有必要把数据保存在服务器端。Session就是服务器端创建的对象,用来保存同一客户端多次请求中的数据。

如果客户端没有禁用cookie,就使用cookie保存session ID。如果禁用,则把ID写在URL上(像get请求那样)。
在服务端保存Session对象的地方很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移。

application对象:网站上看到的在线人数、访问次数、在线投票等一些全局数据,需要在多个会话,多个页面间共享。

上一篇 下一篇

猜你喜欢

热点阅读