request请求转发和response重定向

本文介绍了HTTP请求转发和响应重定向的区别,以及在Web开发中如何使用response对象进行操作。同时,详细讲解了Cookie的工作原理和管理,以及session会话机制,包括session的创建、管理以及其与客户端cookie的关系。最后,概述了JSP中的四种范围对象(pageContext、request、session、application)及其作用域和使用注意事项。
摘要由CSDN通过智能技术生成

1.response对象

提供的方法:

  • void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象
  • void sendRedirect(String location ) throws IOException :页面跳转的一种方式(重定向)
  • void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)
请求转发重定向
地址栏是否改变不变(check.jsp)改变(success.jsp)
是否保留第一次请求时数据保留不保留
请求的次数12
跳转发生的位置服务端客户端发出的第二次跳转

在这里插入图片描述

  • 请求转发可联想为银行取钱办业务
    转发:
    张三(客户端) -> 【 服务窗口 A (服务端 ) -> 服务窗口B 】
  • 重定向就是找有关部门踢皮球

2.Cookie( 非内置对象,服务器产生,存在于客户端)

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() 返回cookie数组;

a.服务端增加cookie :response对象(一次性添加所有cookie);客户端获取对象:request对象
b.不能直接获取某一个单独对象,只能一次性将 全部的cookie拿到


3.session(服务端对象) :会话

session机制:

客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息);
并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session);
服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值;
然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID - sessionID)

客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;
在这里插入图片描述
在这里插入图片描述


4.四种范围对象(小->大)

pageContext JSP页面容器 (page对象); 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliation 全局对象 全局有效(整个项目有效)

以上4个对象共有的方法:
Object getAttribute(String name):根据属性名,或者属性值
void setAttribute(String name,Object obj) :设置属性值(新增,修改)
setAttribute(“a”,“b”) ;//如果a对象之前不存在,则新建一个a对象 ;
如果a之前已经存在,则将a的值改为b
void removeAttribute(String name):根据属性名,删除对象

a.
pageContext 当前页面有效 (页面跳转后无效)

b.
request 同一次请求有效;其他请求无效 (请求转发后有效;重定向后无效)

c.
session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效 ; 从 登陆->退出 之间 全部有效)

d.
application
全局变量;整个项目运行期间 都有效 (切换浏览器 仍然有效);关闭服务、其他项目 无效

->多个项目共享、重启后仍然有效 :JNDI

1.以上的4个范围对象,通过 setAttribute()复制,通过getAttribute()取值;
2.以上范围对象,尽量使用最小的范围。因为 对象的范围越大,造成的性能损耗越大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值