session机制:
客户端 第一次 请求 服务端 时,服务端 会产生一个session对象(用于保存该客户的信息);
jsessionid与sessionid对应,唯一标识;
服务端由会 产生一个cookie,响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);
key | name | value |
---|---|---|
value | JSESSIONID | sessionId |
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID)
客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;(jsessionid-sessionid)
response :响应对象
提供的方法:
void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象
void sendRedirect(String location ) throws IOException; :页面跳转的一种方式(重定向)
void setContetType(String type): 设置服务端响应的编码(设置服务端的contentType类型)
请求转发 | 重定向 | |
---|---|---|
地址栏是否改变 | 不变 | 改变 |
是否保留第一次请求的数据 | 保留 | 不保留 |
请求的次数 | 1 | 2 |
跳转发生的位置 | 服务端 | 客户端发出的第二次跳转 |
转发:
张三(客户端) -> 【 服务窗口 A (服务端 ) -> 服务窗口B 】
重定向:
张三(客户端) -> 服务窗口 A (服务端 ) ->去找B
张三(客户端) -> 服务窗口 B (服务端 ) ->结束
Cookie
(客户端,不是内置对象):Cookie是由 服务端生成的 ,再发送给客户端保存。
相当于 本地缓存的作用: 客户端(hello.mp4,zs/abc)->服务端(hello.mp4;zs/abc)
作用:提高访问服务端的效率,但是安全性较差。
Cookie: name=value
javax.servlet.http.Cookie
public Cookie(String name,String value)
String getName():获取name
String getValue():获取value
void setMaxAge(int expiry);最大有效期 (秒)
服务端准备Cookie:
response.addCookie(Cookie cookie)
页面跳转(转发,重定向)
客户端获取cookie: request.getCookies();
a.服务端增加cookie :response对象; 客户端获取对象:request对象
b.不能直接获取某一个单独对象,只能一次性将 全部的cookie拿到
建议 cookie只保存 英文数字,否则需要进行编码、解码