JSP隐含对象

  • 1. JSP隐含对象概述
    • 1.1隐含对象功能
    • 1.2JSP中的9种隐含对象
  • 2. 与输入/输出有关的隐含对象
    • 2.1request对象
      • 2.1.1获得客户端提交的信息
      • 2.1.2处理中文信息
        • 2.1.2.1JSP页面中的汉字问题
        • 2.1.2.2表单提交的汉字问题
      • 2.1.3避免空指针异常
      • 2.1.4获取HTML表单数据
      • 2.1.5表格
    • 2.2response对象
      • 2.2.1动态设置MIME类型
      • 2.2.2response对象的http头
      • 2.2.3response重定向
      • 2.2.4response的状态行
    • 2.3out对象
  • 3. 与属性作用域有关的对象
    • 3.1session对象
      • 3.1.1session对象的ID标识
      • 3.1.2session对象和URL重写
      • 3.1.3在会话对象中保存数据
      • 3.1.4session对象的生存时间
    • 3.2application对象
      • 3.2.1application对象的常用方法
      • 3.2.2Session 与 Application 区别
    • 3.3pageContext对象
  • 4. 与Servlet 有关的隐含对象
    • 4.1page对象
    • 4.2config对象
  • 5. 与Error 有关的隐含对象

1. JSP隐含对象概述

  • JSP页面的隐含对象就是在JSP页面中不用声明就可以使用的对象
  • 隐含对象是JSP引擎自动创建的Java类实例,它们能与Servlet环境交互。
  • 隐含对象可以实现很多功能,如:从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。
  • 隐含对象是由特定的Java类所产生的,在服务器运行时根据情况自动生成,利用隐含对象,可以屏蔽很多Servlet API细节。

1.1隐含对象功能

  • 存取out对象打印信息到客户端:
    <% out.println(“Hello”); %>
  • 借助request对象取得客户端输入的参数值:
    <% String name=request.getParameter(“name”); %>
  • 完成页面的重定向:
    <% response.sendRedirect(“/h.jsp”);%>
  • 在错误页面中显示出错信息:
    <% String st=exception.getMessage();%>

1.2JSP中的9种隐含对象

  • 与输入/输出有关
对象 有效范围 所属的类 说明
request(请求对象) request javax.servlet.http.HttpServletRequest 客户端的请求信息
response(响应对象) page javax.servlet.http.HttpServletResponse 网页传回客户端的响应
out(输出对象) page javax.servlet.jsp.JSPWriter 向客户端浏览器输出数据的数据流
  • 与属性作用域有关
对象 有效范围 所属的类 说明
session(会话对象) session javax.servlet.http.HttpSession 与请求有关的会话
application(应用程序对象) application javax.servlet.ServletContext 提供全局的数据,一旦创建就保持到服务器关闭
pageContext(页面上下文对象) page javax.servlet.jsp.PageContext JSP页面的上下文,用于访问页面属性
  • 与Servlet 有关
对象 有效范围 所属的类 说明
page(页面对象) page java.lang.Object 类似Java中的this指针,即JSP页面本身
config(配置对象) page javax.servlet.servletConfig 用于存取Servlet的配置信息
  • 与Error 有关
对象 有效范围 所属的类 说明
exception(异常对象) page java.lang.Throwable 针对错误网页,捕捉一般网页中未捕捉的异常

2. 与输入/输出有关的隐含对象

2.1request对象

  • 在JSP页面中,隐含对象request代表的是来自客户端的请求,实现javax.servlet.HttpServletRequest 接口类。通过它可以查看
    –请求参数
    –请求类型
    –请求的HTTP头客户端信息
    –储存和取得属性
    –其它等
  • 取得请求参数的方法
方法 说明
String getParameter(String name) 取得name 的参数值
Enumeration getParameterNames( ) 取得所有的参数名称
String[] getParameterValues(String name) 取得所有name 的参数值
Map getParameterMap( ) 取得一个参数的Map
String getHeader(String name) 取得name 的头的值
Enumeration getHeaderNames() 取得所有的头名称
Enumeration getHeaders(String name) 取得所有名称为name 的头的值
int getIntHeader(String name) 取得name头的整数类型值
long getDateHeader(String name) 取得name头的日期类型值
Cookie[] getCookies( ) 取得与请求有关的cookies
  • 储存和取得属性方法
方法 说明
Object getAttribute(String name) 取得request对象中的name属性值
void setAttribute(String name, Object o) 设定名字为name的属性值为o
void removeAttribute(String name) 取消request对象中的name属性
Enumeration getAttributeNames() 返回request对象所有属性的名字
  • 其他的方法
方法 说明
String getContentType() 取得请求数据类型
int getContentLength() 取得请求数据长度
String getProtocol() 取得请求所用的通信协议和版本
String getScheme() 取得使用的URL类型
String getRemoteAddr() 取得发出请求的IP地址
String getRemoteHost() 取得发出请求的完整主机名
ServletInputStream getInputStream() 取得客户端上传数据的数据流
String getQueryString() 取得请求的参数字符串,,HTTP的方法必须为GET
String getMethod() 取得GET或POST等
StringBuffer getRequestUrl() 取得请求的URL地址
String getContextPath() 取得Context 路径(即站点名称)
String getRequestedSessionId() 取得用户端的Session ID
String getRequestURI() 取得请求的URL,但是不包括请求的参数字符串
int getRemotePort() 取得客户的主机端口
String getRemoteUser() 取得客户的名称
void setCharacterEncoding(String encoding) 设定编码格式,用来解决窗体传递中文的问题
  • request比较重要的方法
    getParameter()
    getParameterNames()
    getParameterValues()
    getHeader()

2.1.1获得客户端提交的信息

  • 一个文档exa3_1.jsp提交(action)一个表单给tree.jsp页面
  • tree.jsp通过**request.getParameter()**接收表单中的客户输入,并将有关信息送回客户端。

2.1.2处理中文信息

2.1.2.1JSP页面中的汉字问题

  • 使用page指令
    <%@ page contentType=“text/html;charset=UTF-8”%>

2.1.2.2表单提交的汉字问题

  • 客户端和服务器交互过程中,在客户端和服务器用的是UTF-8,而HTTP传输用ISO_8859_1编码,所以服务器端接收到客户端数据时需要将编码转换为UTF-8
  • <% String name=request.getParameter(“tt”);
    name=new String(name.getBytes(“ISO-8859-1”));%>

    <% request. setCharacterEncoding (“UTF-8");
    String name=request.getParameter(“tt”);%>

2.1.3避免空指针异常

  • 由于JSP引擎在首次运行JSP页面时,客户端还没有提交数据,要避免使用空对象
  • Java解释器会提示出现空指针异常NullPointerException
  • 为了避免使用空对象,在JSP页面中要处理空指针的情况。例如使用如下代码:
String textContent=request.getParameter(“num”);
if(textContent==null){textContent="0";
}

2.1.4获取HTML表单数据

  • 表单form主要用于采集和提交用户输入的信息。
  • 表单的一般格式为:
<form method=“get|post ” action=“信息提交的目标位置” name=”表单名”>
表单中的标记(数据提交的手段)
</form>
  • 表单中的标记
- <input>:输入控件
- <select>:列表框或下拉框<option>: select 元素中的一个选项
- <textarea>:指定多行文本输入控件
  • 用单选按钮
    <input type=“radio” name=“rad” checked=“java”>
    checked为非空标志初始被选中
    当一组单选按钮的name值相同,则这组单选按钮只能有一个被选中
  • 列表:
    有size属性是滚动列表;否则是下拉列表
<select><option>… </option><option>… </option>
</select>

2.1.5表格

<table><TR width=“该行的宽度” border=…><TH  width=”单元格宽度” Align="对其方式">单元格中的数据</TH>···<TD width=”单元格宽度” Align="对其方式">单元格中的数据</TD></TR>
<table>

2.2response对象

  • 当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器接到请求时会返回HTTP响应(javax.servlet.HttpServletResponse接口类的一个实例)。
  • response对象代表的是对客户端的响应,可以通过response对象来组织发送到客户端的数据。
  • 设定表头的方法
  • 设定响应状态码的方法
  • 用来URL 重写的方法
  • 其他方法
  • response对象中使用较多的方法是:
    setContentType()
    sendRedirect()
    setHeader()

2.2.1动态设置MIME类型

  • MIME(Multipurpose Internet Mail Extension protocol,多用途网际邮件扩充协议)
  • 在page指令中的contentType属性用来指定response对象响应客户端请求的MIME类型
  • contentType属性和MIME类型的对应关系
  • page指令只能为contentType指定一个值
  • 如果想动态地改变这个属性的值来以各种不同的方式做出响应,使用response对象的setContentType()方法改变contentType的值。
  • 旦该属性值被改变,服务器就将按照新的MIME类型做出响应

2.2.2response对象的http头

  • response对象可以动态添加和修改相应HTTP头的值,并将这些信息送给客户端
    addHeader()方法
    setHeader()方法
  • 格式:
    response.setHeader(“头信息名",“参数”);
  • 动态设置刷新时间:使客户端显示该页面时,每5秒钟刷新一次。
    response.setHeader(“Refresh”,“5”);
    setHeader(“Refresh”, “5; URL=http://index.jsp”);
    response.setHeader(“refresh”, “2;login.jsp”);

2.2.3response重定向

  • resp.sendRedirect("/login_error.jsp");

2.2.4response的状态行

  • 当服务器响应客户端请求时,它发送的首行被称为状态行。状态行包括3位数字的状态码和对状态码的简单描述。
    1xx主要是试验性质的;
    2xx表示请求成功;
    3xx表示在请求在满足之前应进一步采取的行动;
    4xx表示服务器无法满足要求
    5xx服务器出现错误

2.3out对象

  • out对象代表直接向客户端发送数据的对象,通过out对象发送的内容将是浏览器需要显示的文本内容(动态生成HTML文件)。
  • javax.servlet.jsp.JspWriter类的实例。
  • JSP允许通过page指令的buffer属性调整out对象缓存的大小,甚至允许关闭缓存
  • out对象重要方法

3. 与属性作用域有关的对象

  • Cookie :小型文字档案,用来存储有关信息,如购物信息、用户登录信息等。
  • 重写URL :把一些标识会话的数据附加到URL后面,服务器能够把该会话标识和它所保存的会话数据关联起来。
  • 隐藏表单域 :通过表单的隐藏域维持会话
  • HttpSession API :Servlet提供的方案
  • HttpSession API是一个基于Cookie或者URL重写机制的高级会话状态跟踪接口。
    如果浏览器支持Cookie,则使用Cookie
    如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL重写方法

3.1session对象

  • 会话:从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开服务器结束或超时
  • session对象是javax.servlet.http.HttpSession类的实例。
  • session对象使同一用户在访问Web站点时多个页面间共享信息。
  • session对象的主要方法


3.1.1session对象的ID标识

  • 客户首次访问服务器上的JSP页面
  • JSP引擎产生session对象,分配给它一个String类型的ID
  • 将session ID发送到客户端存入Cookie中
  • session对象和客户端之间建立一一对应关系
  • 客户在该服务器不同网页间转换或从其他服务器回到该服务器时,不分配给客户新的session,
  • 直到客户关闭浏览器或强制使session无效,分配给客户的session对象被取消。

3.1.2session对象和URL重写

  • 如果客户端不支持Cookie,服务器无法将session ID写到客户端,也无法识别同一个客户端。
  • 解决该问题的有效方法是URL重写。

3.1.3在会话对象中保存数据

  • 保存和获得session对象中的数据;session对象提供一个内建的数据结构,保存任意数量的键-值对。
    getAttribute()返回类型是Object或null,需要类型转换 。
    setAttribute(Object key, Object value) 的参数类型是对象。
  • 要在JSP中使用session对象,page指令的属性session不能设为false,否则使用session时会产生编译错误

3.1.4session对象的生存时间

  • 创建:第一次执行request.getSession()时创建
  • Session的销毁只有两种情况:
    第一:session调用了 session.invalidate()方法
    第二:前后两次请求超出了session指定的生命周期时间
    其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:
<session-config><session-timeout>5</session-timeout>
</session-config>
  • 一般来说,下列情况会使会话结束:
    由于网络故障套接字删除
    关闭浏览器
    服务器关闭重启
    会话超时和主动撤销会话。

3.2application对象

  • application对象负责提供应用程序在服务器中运行时的一些全局信息
  • 服务器启动时就创建一个application对象
  • 客户在该服务器的各个页面之间链接时,application对象都是同一个,直到服务器关闭

3.2.1application对象的常用方法


3.2.2Session 与 Application 区别

  • 服务的对象不一样
    在同一个浏览器窗口中,无论向服务器发送多少请求,session 对象只有一个;当 application 对象没有被销毁的时候,所有用户都可以享用该 application 对象。

  • 性质不一样
    session是会话变量,只要同一个浏览器没有被关闭,session对象就会存在;application它类似于系统的全局变量。

  • 使用的人不一样
    一个浏览器只能创建一个 session 变量;所有浏览器用户都可以使用服务器上的 application 对象。

  • 保存的内容不一样
    session 对象可以存储或者读取客户的相关信息;application 对象可以用于保存所有程序中的公有数据。

  • 变量的生命周期不一样
    可以通过编写程序进行修改这个 session 的生命周期的时间;application 的生命周期是最长的。

3.3pageContext对象

  • pageContext对象主要用来管理页面的属性,描述JSP文档的运行环境,提供对所有其他隐含对象及其属性的访问。

4. 与Servlet 有关的隐含对象

  • 与Servlet 有关的隐含对象有两个: page和config。
    page对象表示Servlet本身;
    config对象则存放Servlet的初始参数值。

4.1page对象

  • 它是this的同义词,表示JSP页面本身,是Servlet类的一个实例,可以调用Servlet中的任何方法。
  • 它实现javax.servlet.jsp.HttpJspPage接口。

4.2config对象

  • config对象是 javax.servlet.servletConfig 接口的实例,存储Servlet配置对象。其重要方法如下表所示:

5. 与Error 有关的隐含对象

  • 这类的隐含对象:exception 对象。
  • exception对象代表了JSP文件运行时所产生的异常对象,目的是在JSP内处理错误。
  • 此对象只能在设置下述属性的JSP文件中直接使用
    <%@ page isErrorPage=“true ”%>

jsp_02JSP隐含对象相关推荐

  1. EL表达式隐含对象和jstl命名冲突,jstl无法取的值

    为什么80%的码农都做不了架构师?>>>    Jsp的EL表达式有11个隐含对象: pageContext, param, paramValues(对应多个值), header, ...

  2. JSP的隐含对象/隐藏对象/内置对象介绍

    文章目录 out JspWriter 和 PrintWriter 的区别 request response session application exception config pageConte ...

  3. #1123-JSP隐含对象

    JSP 隐含对象 JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象,描述 reque ...

  4. Java隐含对象实验报告,JSP隐含对象response实现文件下载

    一.简单介绍JSP隐含对象response实现文件下载 (1)在JSP中实现文件下载最简单的方法是定义超链接指向目标资源,用户单击超链接后直接下载资源,但直接暴露资源的URL也会带来一些负面的影响,例 ...

  5. Java Web学习笔记04:JSP隐含对象

    文章目录 一.什么是JSP隐含对象? 二.JSP隐含对象 三.request对象 1.request对象的作用

  6. JSP中9个隐含对象

    隐含对象 所属的类 说明 request javax.servlet.http.HttpServletRequest 客户端的请求信息 response javax.servlet.http.Http ...

  7. jsp页面九大隐含对象

    JSP隐含对象是JSP容器为每个页面提供的Java对象,是tomcat在翻译jsp到Java文件阶段给我们创建好的,我们可以直接拿来使用.JSP隐含对象也被称为预定义变量. 1.request:相当于 ...

  8. 隐含对象是什么意思?有哪些隐含对象?

    JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所使用.开发者不用明确的声明就可以直接使用他们.JSP隐含对象也叫做预定义变量.下面列出了JSP页面中的隐含对象: a ...

  9. jsp中的九大隐含对象和EL中的隐含对象

    JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象 描述 request HttpSe ...

最新文章

  1. relink 11gR2 数据库
  2. 计算机桌面为什么总是换,你的电脑桌面是什么,
  3. BFS广度优先算法, DFS深度优先算法,Python,队列实现,栈实现
  4. 01 linux操作系统概述与安装
  5. [转帖]VMware时间不准问题的解决方法
  6. Android 长截屏原理
  7. 计算机术语bisoin,[焦仔推荐]菜鸟起飞!让你清楚认识电脑BIOS(经典知识性文章)...
  8. Git | git的简单使用教程
  9. 吃饭?睡觉?打豆豆?
  10. 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界 摄像机的实现
  11. vue3 + vite + ts 设置 @ 路径别名
  12. 阿里云的大数据ACP认证含金量高吗?
  13. 【论文】【ACL2018】Neural Document Summarization by Jointly Learning to Score and Select Sentences
  14. 一般各类模具开模周期
  15. 使用 idea查看类关系图形
  16. python matplotlib设置字体大小_python – Matplotlib表的字体大小
  17. 操作系统—存储器管理
  18. 一位高僧的告诫:人在惹祸前,往往有3个征兆,有一个就要警醒!
  19. C/C++ 提权与强制卸载DLL
  20. Win10系统如何设置护眼模式?

热门文章

  1. android 手机红外遥控器
  2. NXP PN53x系列芯片介绍
  3. python 算法测试结果自动保存到excel表格
  4. SQl函数: 1.取整函数
  5. mysql 学生成绩最高分的学科_sql查询成绩表中每一科成绩最高的分数以及这个学生的名字,学科名,面试的时候碰到的问题...
  6. 验证哥德巴赫猜想(函数专题)
  7. mac上snip截屏问题
  8. BootStrap表格详解
  9. 傅里叶分析—傅里叶级数
  10. Final发布 文案+美工展示