JavaWeb - response、session、cookie

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只保存 英文数字,否则需要进行编码、解码

发布了41 篇原创文章 · 获赞 1 · 访问量 560

猜你喜欢

转载自blog.csdn.net/qq_41620020/article/details/104968950