1: Cookie技术 (数据保存浏览器)
1): 应用场景(自动登录)
2): 创建Cookie
可以直接new 如: Cookie cookie = new Cookie("name","123");
3): 向浏览器添加发送Cookie
response.addCookie(cookie);
4): 服务端接收浏览器上的cookie信息
request.getCookies();
5): Cookie的存储与读取的过程
a): 在服务端创建一个cookie, 如: Cookie cookie = new Cookie("name","123");
b): 然后再添加到响应信息发送到浏览器, 如: response.addCookie(cookie);
在发送的响应信息就会有一个set-Cookie响应头信息
c): 浏览器通过解析响应信息,把Cookie信息保存到浏览器客户端
d): 而浏览器在下次访问服务器时,则会把Cookie信息带过去,即在请求信息里会有一个Cookie请求头
e): 服务端即可获取浏览器带过来的Cookie信息, 如: request.getCookie();
6): Cookie对象相关方法(设置与获取)
setPath(uri) 设置cookie的有效访问路径
setMaxAge(int expiry) 设置cookie的有效时间
setValue() 设置cookie的值
getValue() 获取cookie的值
getName() 获取cookie的名
7): Cookie的有效时间
方法: setMaxAge(int expiry) (如: cookie.setMaxAge(60*60*24))
a): 值为正整数时 表示Cookie的有效时间
b): 值为负整数时 表示 Cookie的过期时间为会话结束时,(如:浏览器关闭就清除cookie)
c): 值为0时 表示立即删除cookie
8): 设置Cookie的有效路径
如果有设置,浏览器只有在这个路径下访问服务端,才会带上cookie
9): 设置cookie保存中文问题
因为cookie中不能存储中文,如果想要保存中文,则需要我们另外做一些处理
String value = URLEncoder.encode("二哈","utf-8"); 先对要保存的中文进行下编码然后存入到Cookie中
String value = URLDecoder.decode(cookie.getValue(), "utf-8"); 获取时则需要再解码才能得到中文
ps: Cookie存储有大小限制
2: Session技术(session对象为域对象之一)
1): session保存的数据是在服务端(内存中)
2): 获取session对象
HttpSession session = request.getSession();
3): 浏览器与session域对象
a): 当浏览器第一次访问创建session的servlet时, 这时则会创建一个session对象,且分配一个唯一的JSESSIONID。如: JSESSIONID=3102F886DCB5980C9B0939F14211E6D1; 把这个session保存到内存中
b): 接着把这个JSESSIONID=3102F886DCB5980C9B0939F14211E6D1带回浏览器,保存到浏览器中cookie中
c): 当浏览器再次访问服务器时,则会把那个JSESSIONID带上,服务端则可以通过浏览器带上的这个JSESSIONID找到内存中相应的那个session对象
4): 关于session的创建
可以通过 request.getSession(); 来获取到一个session。
ps: 首先会通过浏览器带过来的JSESSIONID到内存里去找是否有这个JSESSIONID匹配的session对象,如果有则把匹配到的那个session对象返回,如果没有则创建一个新的session对象。
5): 相关方法
request.getSession();
reqeust.getSession(boolean create);
setMaxInactiveInterval(int interval) 设置session的有效时间
invalidate() 销毁session对象
getId() 得到session编号
setAttribute() 保存数据
getAttribute() 获取数据
removeAttribute() 清除数据
6): reqeust.getSession(boolean create);
如果参数值是false,即如果在内存里没有找到相匹配的那session对象,则也不会再创建新的session了
7): session的过期时间
session会有一个默认的过期时间为30分钟,我们可以通过setMaxInactiveInterval(int interval)方法来设置它的这个值。
如: session.setMaxInactiveInterval(20); 单位是秒,从最后一次访问开始计算
还可以设置全局的session过期时间,在web.xml中进行配置(改完配置文件,需要重新启动下。)
如: <session-config>
<session-timeout>1</session-timeout>
</session-config>
ps: 当服务器关闭时,内存里的session会被清掉,但是这时会在电脑硬盘上保存一个session的文件
如:F:\apache-tomcat-7.0.82\work\Catalina\localhost\day08\SESSIONS.ser, 当然服务器再次启动时,则会把这个文件加载到内存里,所以再次访问时依然能访问到。如果服务器关掉,就把这些session销毁掉,可以在Context.xml配置文件中加上 <Manager pathname="" /> 可以阻止这个过程
8): session的钝化与活化
在Context.xml配置文件中,加上如下配置
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="mysession" />
</Manager>
当页面过了1分钟没有操作的话则session会被钝化,从内存取出保存到文件中,
当再次操作时 session则会再次加到内存中,这个过程叫session的活化
jsp-Cookie与HttpSession对象
最新推荐文章于 2020-11-16 18:01:13 发布