您当前的位置: 首页 > 

大前端之旅

暂无认证

  • 2浏览

    0关注

    403博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JSP中response,session,cookie,application的作用及区别

大前端之旅 发布时间:2020-06-06 14:53:43 ,浏览量:2

目录
    • 1.response :响应对象
    • 2.session(服务端)
    • 3.使用Cookie实现 记住用户名 功能
    • 4.session :会话
    • 5.session机制:
    • 6.session:
    • 7.session方法:
    • 8.cookie和session的区别:
    • 9.appliation 全局对象
    • 10.JSP9大内置对象
    • 11.四种范围对象(小1->大4)
      • a.pageContext
      • b.request
      • c.session
      • d.application
    • 12.源码如何关联

1.response :响应对象

提供的方法: void addCookie( Cookie cookie ); 服务端向客户端增加cookie对象 void sendRedirect(String location ) throws IOException; :页面跳转的一种方式(重定向) void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)

示例:登陆 login.jsp -> check.jsp ->success.jsp

请求转发重定向地址栏是否改变不变(check.jsp)改变(success.jsp)是否保留第一次请求时的数据保留不保留–4种范围对象请求的次数12跳转发生的位置服务端客户端发出的第二次跳转

image-20200604221305506

转发、重定向:

转发:

张三(客户端)     ->    【 服务窗口 A (服务端 )    ->  服务窗口B  】

重定向:

	张三(客户端) 	  -> 	服务窗口 A (服务端 ) ->去找B
张三(客户端)    -> 	服务窗口 B (服务端 ) ->结束
2.session(服务端)

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拿到

通过F12可以发现 除了自己设置的Cookie对象外,还有一个name为 JSESSIONID的cookie

建议 cookie只保存 英文数字,否则需要进行编码、解码






Insert title here











Insert title here



	



3.使用Cookie实现 记住用户名 功能





Insert title here








用户名:
密码:
提交:










Insert title here


	









Insert title here





4.session :会话

a.浏览网站:开始-关闭 b.购物: 浏览、付款、退出

Insert title here c.电子邮件:浏览、写邮件、退出 开始-结束 5.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),说明此用户 不是第一次访问,无需登录;

例子: 客户端: 顾客(客户端) 服务端: 存包处 - 商场(服务端)

顾客第一次存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙)。 如果是新顾客(没钥匙) ,分配一个钥匙 给该顾客; 钥匙 会和 柜子 一一对应;

第二/n次 存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙) 如果是老顾客(有钥匙),则不需要分配;该顾客手里的钥匙 会 和柜子 自动一一对应。

6.session:

a. session存储在服务端(同一次会话共享,比如浏览同一个网页)

b. session是在 同一个用户(客户)请求时 共享

c. 实现机制:第一次客户请求时 产生一个sessionid 并复制给 cookie的jsessionid 然后发给客户端。最终 通过session的sessionid-cookie的jsessionid

7.session方法:
String getId() :获取sessionId  

boolean isNew() :判断是否是 新用户(第一次访问)

void invalidate():使session失效  (退出登录、注销)

void setAttribute()

Object getAttribute();

void setMaxInactiveInterval(秒) :设置最大有效 非活动时间 

int getMaxInactiveInterval():获取最大有效 非活动时间  比如你设置的是一小时,在这期间你一直在浏览该页面,不会有影响,但是如果你去吃个饭回来,会让你重新登陆。

示例: 登录

image-20200606103122339

客户端在第一次请求服务端时,如果服务端发现 此请求没有 JSESSIONID,则会创建一个 name=JSESIONID的cookie 并返回给客户端

Cookie:

a.不是内对对象,要使用必须new

b.但是,服务端会 自动生成一个(服务端自动new一个cookie) name=JSESIONID的cookie 并返回给客户端

8.cookie和session的区别: sessioncookie保存的位置服务端客户端安全性较安全较不安全保存的内容ObjectString 9.appliation 全局对象

String getContextPath() 虚拟路径 String getRealPath(String name): 绝对路径(虚拟路径 相对的绝对路径)

10.JSP9大内置对象

pageContext JSP页面容器 request 请求对象 session 会话对象 appliation 全局对象

response 响应对象

config 配置对象(服务器配置信息) out 输出对象 page 当前JSP页面对象(相当于java中的this) exception 异常对象

11.四种范围对象(小1->大4) 2request请求对象同一次请求有效3session会话对象同一次会话有效4appliation全局对象全局有效(整个项目有效)1pageContextJSP页面容器 (page对象)当前页面有效

以上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

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


b.request

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

response.sendRedirect("rq1.jsp");
request.getRequestDispatcher("rq1.jsp").forward(request, response);
c.session

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

session.setAttribute("hello", "word");
response.sendRedirect("ss1.jsp");
d.application

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

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

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

12.源码如何关联

1.进入官网,下载对应版本源码

官网(https://www.apache.org/)

Tomcat官网(https://tomcat.apache.org/download-90.cgi)

下载源代码

然后导入即可!

image-20200606124557860

关注
打赏
1660524863
查看更多评论
立即登录/注册

微信扫码登录

0.0357s