JSP之【九大内置对象】和【四大范围对象】
1.【九大内置对象】
out
request
response
session
application
pageContext:JSP页面容器
config :配置对象,服务器的配置信息
page :当前的JSP页面(像Java的this)
exception :异常对象
out
request
response
session
application
pageContext:JSP页面容器
config :配置对象,服务器的配置信息
page :当前的JSP页面(像Java的this)
exception :异常对象
详情:
■out:输出对象,作用域 Page
■request(client向服务器发送请求):
◇String getParameter(String key) 返回key对应的value的参数值
※打个比方,我在check页面使用getParameter获取login页面用户输入的data,只要getParameter的key参数为studentID—和login页面<input name=”studentID”>保持一致,我就能在check页面得到”001″
◇String[] getParameterValues(String key) 返回包含key的对应的value数组
◇String getCharacterEncoding() 返回字符编码方式
◇request.getRequestDispatcher():请求转发
※关于JSP的request提交方式
①.定义:JSP页面和server服务器的互动过程中,JSP页面要向server服务器提交data(比如用户从页面中输入的信息),提交的方式有两种,get和post。
②.默认:get
③.推荐选择:post,毕竟安全第一
④.区别:
get:速度快,可容纳的数据size小,不安全(会在地址栏中暴露数据,地址栏晓得吧,就是浏览器中最上面输入框啦。有的愚蠢网页会在URL中暴露当前用户的用户名和密码)
post:慢?(相对get可能慢,但可忽略),安全啊,可容纳的数据size大(比如上传视频音频)
◇String getParameter(String key) 返回key对应的value的参数值
※打个比方,我在check页面使用getParameter获取login页面用户输入的data,只要getParameter的key参数为studentID—和login页面<input name=”studentID”>保持一致,我就能在check页面得到”001″
◇String[] getParameterValues(String key) 返回包含key的对应的value数组
◇String getCharacterEncoding() 返回字符编码方式
◇request.getRequestDispatcher():请求转发
※关于JSP的request提交方式
①.定义:JSP页面和server服务器的互动过程中,JSP页面要向server服务器提交data(比如用户从页面中输入的信息),提交的方式有两种,get和post。
②.默认:get
③.推荐选择:post,毕竟安全第一
④.区别:
get:速度快,可容纳的数据size小,不安全(会在地址栏中暴露数据,地址栏晓得吧,就是浏览器中最上面输入框啦。有的愚蠢网页会在URL中暴露当前用户的用户名和密码)
post:慢?(相对get可能慢,但可忽略),安全啊,可容纳的数据size大(比如上传视频音频)
■response
◇response.sendRedirect():重新定向(request.getRequestDispatcher():请求转发)
※关于请求转发和重定向
背景:有三个页面,登录+check用户名密码是否匹配+登录成功后的页面。最初只有登录是在客户端的,其他两个页面都需要页面跳转才会展示在客户端。
推荐:请求转发
区别:
①请求转发client只向服务端发起一次request,重定向由于甩锅事件,client不得不向服务端发起两次请求。
请求转发的页面跳转在服务端内部就全部完事,干净利索的地把最终页面展示给客户端。重定向只会甩锅。
请求转发:check页面拿到login页面的data检查完之后,直接去把用户拉到登录成功页面
重定向:是一个假惺惺的甩锅大侠。check完数据后明明知道下一步该去登录成功页面了,但它就是不去,而是低效地把登录成功页面的地址告诉client,让client再跟服务器请求一次登录成功页面
②
发生页面跳转时,地址栏:
请求转发:不变。还是check页面的地址
重定向:变了。地址栏变成登录成功页面的地址
③
data的迁移问题
请求转发:data保留。check页面从login页面拿到的data,会继续给登录成功页面(bingo!登录成功,欢迎你,大头!)
重定向:data不保留。登录成功页面不会拿到login页面的data(bingo!登录成功,欢迎你,NULL!)
原因:request的数据,只在一次请求内有效,重定向是两次request了,当然不会让它拿到数据
◇addCookie 添加一个Cookie对象
※关于Cookie
①定义:非内置九大对象哦。每次要想用都要new一个。
②作用/存在的意义:四个字,本地缓存。(fex:大头在油管上看《寄生虫》,太好看所以二刷,二刷特顺畅,因为服务器已经在客户端放了一个寄生虫cookie了)
③怎么用:服务端生成response.addCookie→服务端发送(跳转重定向)→客户端获取request.getCookie
◇setContentType 设置响应编码方式 (类似request的getCharacterEncoding)
◇response.sendRedirect():重新定向(request.getRequestDispatcher():请求转发)
※关于请求转发和重定向
背景:有三个页面,登录+check用户名密码是否匹配+登录成功后的页面。最初只有登录是在客户端的,其他两个页面都需要页面跳转才会展示在客户端。
推荐:请求转发
区别:
①请求转发client只向服务端发起一次request,重定向由于甩锅事件,client不得不向服务端发起两次请求。
请求转发的页面跳转在服务端内部就全部完事,干净利索的地把最终页面展示给客户端。重定向只会甩锅。
请求转发:check页面拿到login页面的data检查完之后,直接去把用户拉到登录成功页面
重定向:是一个假惺惺的甩锅大侠。check完数据后明明知道下一步该去登录成功页面了,但它就是不去,而是低效地把登录成功页面的地址告诉client,让client再跟服务器请求一次登录成功页面
②
发生页面跳转时,地址栏:
请求转发:不变。还是check页面的地址
重定向:变了。地址栏变成登录成功页面的地址
③
data的迁移问题
请求转发:data保留。check页面从login页面拿到的data,会继续给登录成功页面(bingo!登录成功,欢迎你,大头!)
重定向:data不保留。登录成功页面不会拿到login页面的data(bingo!登录成功,欢迎你,NULL!)
原因:request的数据,只在一次请求内有效,重定向是两次request了,当然不会让它拿到数据
◇addCookie 添加一个Cookie对象
※关于Cookie
①定义:非内置九大对象哦。每次要想用都要new一个。
②作用/存在的意义:四个字,本地缓存。(fex:大头在油管上看《寄生虫》,太好看所以二刷,二刷特顺畅,因为服务器已经在客户端放了一个寄生虫cookie了)
③怎么用:服务端生成response.addCookie→服务端发送(跳转重定向)→客户端获取request.getCookie
◇setContentType 设置响应编码方式 (类似request的getCharacterEncoding)
■session 会话
①定义:一个人用一个账号在web上的一次完整动作。大头用她的淘宝账号,从login到浏览商品,加入购物车,结算,logoff,是一次大头账号与淘宝的会话。
②存在的意义:便于淘宝服务器时刻管理大头啊,无论她看哪家的商品,东跑西跑跑到哪里去,淘宝服务器都能把包儿放到名叫大头账号的购物车里。总之,服务器可以以人为单位管理用户的活动,踪迹等
③怎么个管法:大头第一次用自己的账号login淘宝时,服务器会生成一个sessionID,一个JSessionID,两者的value相等,再将JSessionID通过cookie放到客户端(响应请求嘛),从此客户端和服务器都有一个相同的ID,开始了他们的羁绊。
综上所述,一个用户账号—-一个sessionID——一个JSessionID
①定义:一个人用一个账号在web上的一次完整动作。大头用她的淘宝账号,从login到浏览商品,加入购物车,结算,logoff,是一次大头账号与淘宝的会话。
②存在的意义:便于淘宝服务器时刻管理大头啊,无论她看哪家的商品,东跑西跑跑到哪里去,淘宝服务器都能把包儿放到名叫大头账号的购物车里。总之,服务器可以以人为单位管理用户的活动,踪迹等
③怎么个管法:大头第一次用自己的账号login淘宝时,服务器会生成一个sessionID,一个JSessionID,两者的value相等,再将JSessionID通过cookie放到客户端(响应请求嘛),从此客户端和服务器都有一个相同的ID,开始了他们的羁绊。
综上所述,一个用户账号—-一个sessionID——一个JSessionID
◇getId:获取sessionID(获取大头的sessionID)
◇isNew:判断是否是新用户(大头第一次访问淘宝某个页面)
◇invalidate:让sessionID无效化(大头剁手了,退出登录)
◇setAttribute
◇getAttribute
◇getMaxInactiveInterval(大头去打了把游戏再回淘宝买东西。淘宝让她再次登录)
◇isNew:判断是否是新用户(大头第一次访问淘宝某个页面)
◇invalidate:让sessionID无效化(大头剁手了,退出登录)
◇setAttribute
◇getAttribute
◇getMaxInactiveInterval(大头去打了把游戏再回淘宝买东西。淘宝让她再次登录)
※关于Cookie和Session的区别
相同点:20201/2不懂
不同点:cookie保存在客户端,session保存在服务端,服务端比客户端安全
相同点:20201/2不懂
不同点:cookie保存在客户端,session保存在服务端,服务端比客户端安全
■application 全局对象
◇getContextPath:获取虚拟路径。
◇getRealPath:获取绝对路径。比如,获取某个project在本地的绝对路径
◇getContextPath:获取虚拟路径。
◇getRealPath:获取绝对路径。比如,获取某个project在本地的绝对路径
2.【四大作用域/四大范围对象】
■pageContext—————当前JSP页面有效
■request——————-同一次请求有效
■session ——————同一次会话有效
■application—————全局有效,整个project
四大范围对象共同的方法:
①getAttribute————–select
②setAttribute————–insert/update
③removeAttribute———–delete
①getAttribute————–select
②setAttribute————–insert/update
③removeAttribute———–delete
※关于JSP里的getAttribute和setAttribute
setAttribute:两个参数,数据的名字,和数据。无返回值。
getAttribute:一个参数,数据的名字。有返回值,类型object。
setAttribute:两个参数,数据的名字,和数据。无返回值。
getAttribute:一个参数,数据的名字。有返回值,类型object。
版权声明:本文为guodatou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。