JSP之【九大内置对象】和【四大范围对象】

1.【九大内置对象】
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大(比如上传视频音频)
 
■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)
 
■session 会话
①定义:一个人用一个账号在web上的一次完整动作。大头用她的淘宝账号,从login到浏览商品,加入购物车,结算,logoff,是一次大头账号与淘宝的会话。
②存在的意义:便于淘宝服务器时刻管理大头啊,无论她看哪家的商品,东跑西跑跑到哪里去,淘宝服务器都能把包儿放到名叫大头账号的购物车里。总之,服务器可以以人为单位管理用户的活动,踪迹等
③怎么个管法:大头第一次用自己的账号login淘宝时,服务器会生成一个sessionID,一个JSessionID,两者的value相等,再将JSessionID通过cookie放到客户端(响应请求嘛),从此客户端和服务器都有一个相同的ID,开始了他们的羁绊。
综上所述,一个用户账号----一个sessionID------一个JSessionID
   ◇getId:获取sessionID(获取大头的sessionID)
   ◇isNew:判断是否是新用户(大头第一次访问淘宝某个页面)
   ◇invalidate:让sessionID无效化(大头剁手了,退出登录)
   ◇setAttribute
   ◇getAttribute
   ◇getMaxInactiveInterval(大头去打了把游戏再回淘宝买东西。淘宝让她再次登录)
      ※关于Cookie和Session的区别
      相同点:20201/2不懂
      不同点:cookie保存在客户端,session保存在服务端,服务端比客户端安全
 
■application 全局对象
   ◇getContextPath:获取虚拟路径。
   ◇getRealPath:获取绝对路径。比如,获取某个project在本地的绝对路径

2.【四大作用域/四大范围对象】
■pageContext---------------当前JSP页面有效
■request-------------------同一次请求有效
■session ------------------同一次会话有效
■application---------------全局有效,整个project
 
四大范围对象共同的方法:
 ①getAttribute--------------select
 ②setAttribute--------------insert/update
 ③removeAttribute-----------delete
 
  ※关于JSP里的getAttribute和setAttribute
  setAttribute:两个参数,数据的名字,和数据。无返回值。
  getAttribute:一个参数,数据的名字。有返回值,类型object。
原文地址:https://www.cnblogs.com/guodatou/p/12133546.html