zoukankan      html  css  js  c++  java
  • 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。
  • 相关阅读:
    听闻 kubernetes,快速了解一番
    处理器 趣事 CPU/GPU/TPU/DPU/BPU
    记录
    硬盘
    图 总结 AI
    C# 加密、解密PDF文档(基于Spire.Cloud.SDK for .NET)
    Spire.Cloud 私有化部署教程(二)- Ubuntu 18.04 系统
    Spire.Cloud 私有化部署教程(一)
    C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.SDK for .NET
    C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word
  • 原文地址:https://www.cnblogs.com/guodatou/p/12133546.html
Copyright © 2011-2022 走看看