JSP中的九大内置对象

JSP隐含对象(又称内置对象),是指可以不加声明和创建就可以在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量。

在JSP中一共预先定义了九个隐含对象,分别为request, response, pageContext, session, application, out, config, page和exception。

JSP隐含对象的类型如下表所示:

隐含对象 类型 作用域
request javax.servlet.http.HttpServletRequest request
response javax.servlet.http.HttpServletResponse page
pageContext javax.servlet.jsp.PageContext page
session javax.servlet.http.HttpSession session
application javax.servlet.ServletContext application
out javax.servlet.jsp.JspWriter page
config javax.servlet.ServletConfig page
page java.lang.Object page
exception java.lang.Throwable page

request

request对象代表的是javax.servlet.http.HttpServletRequest类的对象,它封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

request获取客户端信息的常用方法如下表所示:

方法 功能
getHeader(String name) 获得HTTP协议定义的文件头信息
getHeaders(String name) 返回指定名字的request Header的所有值,其结果是一个枚举型的实例
getHeadersNames() 返回所有request Header的名字,其结果是一个枚举型的实例
getMethod() 获得客户端向服务器端传送数据的方法,如get、post、header、trace等
getProtocol() 获得客户端向服务器端传送数据所依据的协议名称
getRequestURI() 获得发出请求字符串的客户端地址,不包括请求的参数
getRequestURL() 获得发出请求字符串的客户端地址
getRealPath() 返回当前请求文件的绝对路径
getRemoteAddr() 获取客户端的IP地址
getRemoteHost() 获取客户端的主机名
getServerName() 获取服务器的名字
getServerPath() 获取客户端所请求的脚本文件的文件路径
getServerPort() 获取服务器的端口号
getParameter() 获取客户端通过表单提交过来的参数值
getScheme() 获取请求使用的模式(协议)名字

例:

request.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title> request内置对象的实例 </title></head>
<body>
<form aciton="request.jsp">
Get request results:
<input type="text" name="myname">
<input type="submit" name="get value">
</form>
获取客户提交信息的方式:<%=request.getMethod()%> <br>
获取请求信息中的协议名名字和版本号:<%=request.getProtocol()%> <br>
获取发出请求字符串的客户端地址:<%=request.getRequestURI()%> <br>
获取发出请求字符串的客户端地址:<%=request.getRequestURL()%> <br>
获取提交请求的客户端的IP地址:<%=request.getRemoteAddr()%> <br>
获取服务器的端口号:<%=request.getServerPort()%> <br>
获取接受请求的服务器名称:<%=request.getServerName()%> <br>
获取客户端所请求的脚本文件的文件路径:<%=request.getServletPath()%> <br>
获取Http协议定义的文件头信息Host的值:<%=request.getHeader("host")%> <br>
获取Http协议定义的文件头信息User-Agent的值:<%=request.getHeader("user-agent")%> <br>
获取Http协议定义的文件头信息accept-language的值:<%=request.getHeader("accept-language")%> <br>
获取请求文件的绝对路径:<%=request.getRealPath("request.jsp")%> <br>
获取客户端通过表单提交过来的参数值:<%=request.getParameter("myname")%> <br>
获取客户端的主机名:<%=request.getRemoteHost()%> <br>
获取请求中使用的模式(协议)名字:<%=request.getScheme()%> <br>
</body>
</html>

运行结果:

获取客户提交信息的方式:GET
获取请求信息中的协议名名字和版本号:HTTP/1.1
获取发出请求字符串的客户端地址:/request.jsp
获取发出请求字符串的客户端地址:http://localhost:8080/request.jsp
获取提交请求的客户端的IP地址:127.0.0.1
获取服务器的端口号:8080
获取接受请求的服务器名称:localhost
获取客户端所请求的脚本文件的文件路径:/request.jsp
获取Http协议定义的文件头信息Host的值:localhost:8080
获取Http协议定义的文件头信息User-Agent的值:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
获取Http协议定义的文件头信息accept-language的值:zh-CN,zh;q=0.8,en;q=0.6
获取请求文件的绝对路径:D:\***\我的文档\Tomcat\apache-tomcat-8.0.35\webapps\ROOT\request.jsp
获取客户端通过表单提交过来的参数值:request
获取客户端的主机名:127.0.0.1
获取请求中使用的模式(协议)名字:http

response

response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。

response对象提供了多个方法用来处理HTTP响应,比较常用的方法如下:

方法 功能
setContentLength(int len) 设置响应头的长度
setContentType(String type) 设置HTTP响应的contentType中的MIME类型
getOutputStream() 返回一个Servlet的输出流
getWriter() 返回一个PrintWriter对象
getCharacterEncoding() 获得此时响应所采用的字符编码类型
sendRedirect(String location) 将请求重新定位到一个不同的URL(页面)上
setHeader(String headername, String value) 使用指定的头名字以及相应的值来设置头信息
addheader(String headername, String value) 把指定的头名字以及相应值添加到头信息当中去

session

session在网络中被称为会话,它是javax.servlet.http.HttpSession.session类的对象。由于HTTP协议是一种无状态协议,也就是当一个客户端向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器是不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。

如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这取决于服务器,Tomcat服务器默认为30分钟。

session对象的常用方法如下表所示:

方法 功能
getId() 返回唯一的标识,这些标识为每个session而产生
getCreationTime() 返回session被创建的时间,最小单位为千分之一秒
getLastAccessedTime() 返回客户端最后一次与会话相关联的请求时间
getMaxInactiveInterval() 以秒为单位返回会话内两个请求最大时间间隔
setMaxInactiveInterval() 以秒为单位设置session的有效时间
getAttribute(String key) 通过给定的关键字获取一个存储在session中相对应的信息
setAttribute(String key, Object obj) 提供一个关键词和一个对象值,然后存在session当中
removeAttribute(String name) 从session会话中移除指定的绑定对象
invalidate() 销毁session

注意:session中保存和查找的信息不能是基本数据类型,如int、double等,而必须是java对象,如Integer、Double等。

具体例子可参考JSP中的四种范围属性

application

application是javax.servlet.ServletContext类的对象。该对象用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。

application对象的常用方法如下表所示:

方法 功能
getInitParameter(String name) 返回已命名的应用程序初始化参数值
getAttributeNames() 返回所有已定义的应用程序初始化参数名的枚举
getAttribute(String name) 从application对象中获取指定对象名
setAttribute(String name, Object obj) 保存一个对象信息,并指定给一个名称
removeAttribute(String name) 从application对象中去掉指定名称的属性
getServletInfo() 返回JSP引擎的相关信息
getRealPath(String path) 返回虚拟路径的真实路径
getContext(String URLPath) 返回执行Web应用的application对象
getMajorVersion() 返回服务器所支持的Servlet API最大版本号
getMinorVersion() 返回服务器所支持的Servlet API最小版本号
getMineType(String file) 返回指定文件的MIME类型
getResource(String path) 返回指定资源的URL路径
getResourceAsStream(String path) 返回指定资源的输入流
getRequestDispatcher(String URLPath) 返回指定资源的RequestDispatcher对象
getServlet(String name) 返回指定名称的Servlet
getServlets() 返回所有的Servlet,返回类型为枚举型
getServletNames() 返回所有的Servlet名称,返回类型为枚举型
log(String msg) 把指定信息写入到Servlet的日志文件中
log(String msg, Throwable throwable) 把栈轨迹以及给出的Throwable异常的说明信息写入Servlet的日志文件

具体例子可参考JSP中的四种范围属性

out

out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。out对象可以输出各种数据类型的数据,在输出非字符串类型的数据时,会自动转换为字符串进行输出。

out对象的常用方法如下表所示:

方法 功能
print() 在页面中打印出字符串信息,不换行
println() 在页面中打印出字符串信息,并且换行
clear() 清除缓冲区中的内容
clearBuffer() 清除当前缓冲区中的内容
flush() 刷新流
getBufferSize() 获取缓冲区大小
isAutoFlush() 检测当前缓冲区已满时是自动清空还是抛出异常
close() 关闭输出流

config

config对象主要用于取得服务器的配置信息。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。

config对象的常用方法如下表所示:

方法 功能
getServletContext() 获取Servlet上下文
getInitParameter(String name) 返回初始化参数的值
getInitParameterNames() 返回包含了Servlet初始化所需要的所有参数,返回类型是枚举型
getServletName() 获取Servlet服务器名

page

page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。

page对象的常用方法如下表所示:

方法 功能
getClass() 返回当前Object的类
hashCode() 返回此Object的哈希代码
toString() 把当前Object类转换成字符串
equals(Object o) 比较该对象和指定对象是否相等
copy(Object o) 把该对象复制到指定的对象当中去
clone() 对该对象进行克隆

exception

exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置为isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

exception对象的常用方法如下表所示:

方法 功能
getMessage() 返回exception对象的异常信息字符串
getLocalizedMessage() 返回本地化的异常错误信息
toString() 返回关于异常错误的简单信息描述
fillInStackTrace() 重写异常错误的栈执行轨迹

pageContext

pageContext对象是一个比较特殊的对象。它相当于页面中所有其他对象功能的最大集成者,即使用它可以访问到本页面中所有其他对象,例如request、response以及application等。

pageContext对象常用方法如下表所示:

方法 功能
getRequest() 获取当前页面中的request对象
getResponse() 获取当前页面中的response对象
getPage() 获取当前页面中的page对象
getSession() 获取当前页面中的session对象
getOut() 获取当前页面中的out对象
getException() 获取当前页面中的exception对象
getServletConfig() 获取当前页面中的config对象
getServletContext() 获取当前页面中的application对象
setAttribute(String name) 给指定的属性名设置属性值
getAttribute(String name) 根据属性名找到相应的属性值
setAttribute(String name, Object obj, int scope) 在给定的范围内设置相应的属性值
getAttribute(String name, int scope) 在指定的范围内获取到相应的属性值
findAttribute(String name) 寻找一个属性并返回,如果没有找到则返回一个null
removeAttribute(String name) 通过属性名删除掉某个属性
removeAttribute(String name, int scope) 在指定的某个范围内删除某个属性
getAttributeScope(String scope) 返回某属性的作用域
getAttributeNamesInScope(int scope) 返回指定范围内的所有属性名的枚举
release() 释放掉pageContext()所占的所有资源
forward(String relativeURLpath) 使用当前页面重导到另一个页面
include(String relativeURLpath) 使用当前位置包含的另一个页面

pageContext对象在实际JSP开发中一般很少使用,因为request和response等对象均为内置对象,如果通过pageContext来调用这些对象比较麻烦,都可以直接调用相关方法实现具体的功能。

参考资料

  1. Java Web从入门到精通
  2. 《Servlet JSP深入详解 基于Tomcat的Web开发》
  3. JSP九大内置对象
时间: 2024-10-26 20:35:21

JSP中的九大内置对象的相关文章

jsp中的九大内置对象的定义及作用

1.什么叫做内置对象? 答:在jsp中,有一些对象即开发者不需要自己去创建对象(全部由系统创建好),就可以直接使用对象调用相应的方法,这些由系统创建的对象称为内置对象. 2.九大内置对象分别是哪些? 内置对象名                   类型                                                                 对象名                             作用域 四大作用域对象: request       

JSP数据交互——九大内置对象及其方法详解(一)

①既然说到JSP内置对象,那么什么是JSP内置对象呢? 解析:JSP内置对象,就是在编写JSP页面时,不需要做任何声明就可以直接使用的对象. 如下代码片段:  <% int[]  value  =  { 60, 70, 80 }; for(int i : value){ out.println(i); } %> 代码 out.println()可以实现页面的输出显示,但是在代码中并没有任何地方声明或创建这个out对象,没有创建就可以直接使用的原因就是out对象是JSP内置对象之一. ②为什么J

JSP中的9大内置对象四大域与servlet里的三大域

九大内置对象 隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 request 转译后对应HttpServletRequest/ServletRequest对象 response 转译后对应HttpServletRespons/ServletResponse对象 config 转译后对应ServletConfig对象 application 转译后对应ServletContext对象 session 转译后对应HttpSession对象 page

Jsp总结一(九大内置对象)

一.为什么要使用JSP: JSP 是简化 Servlet 编写的一种技术, 它将 Java 代码和 HTML 语句混合在同一个文件中编写,只对网页中 的要动态产生的内容采用 Java 代码来编写,而对固定不变的静态内容采用普通静态 HTML 页面的方式编写. jsp (全称):->Java Server Page: Java 服务器端网页. 在 HTML 页面中编写 Java 代码的页面.. 二.JSP的运行原理: JSP 本质上是一个 Servlet. 每个JSP 页面在第一次被访问时, JS

探索JSP中的 &quot;9大内置对象!&quot;

1.什么是JSP内置对象? jsp内置对象就是Web容器创建的一组对象,我们都知道Tomcat可以看成是一种Web容器,所以我们可以知道所谓的内置对象Tomcat创建的,使用内置对象时可以不适用new关键字, 直接使用即可. 2.什么是内置对象? 解析:就是Web容器创建的一组对象,当Tocmat启动时,这组对象在Tomcat服务器启动的时候加载到内存,可以用户直接使用. 3.JSP内置对象都有哪些? out(常用) out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区.在

JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式

最近在学习JSP相关基础知识,我们都知道JSP当中存在一组不使用new关键字就可以在脚本和表达式中使用的对象,在Web开发中经常使用.为了能更好的理解这些对象,在此对JSP内置对象作一些归纳. 目录: JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式 JSP内置对象——out(待更新) JSP内置对象——request/response(待更新) JSP内置对象——session(待更新) JSP内置对象——application(待更新) JSP内置对象——其他

Java Web(五) JSP详解(四大作用域九大内置对象等)

前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编写一些HTML代码,是很不方便的一件事情,每次都需要out.println(HTML); 因此就出现了JSP,来解决这样的问题,JSP中的内容就是html,但是能够嵌套java语言,现在来详细了解一下JSP. --WH 一.JSP 1.什么是JSP? JSP(Java Server Pages):是

JSP(Java Server Page)九大内置对象

× Web程序的请求相应模式(请求[request].响应[response]) × form method="get"和method="post"提交方式的区别                  1.get:以明文形式通过url进行参数的传递,数据能在url获取,提交的数据最多不超过2KB,安全性低但效率比post高.                 适用于提交数据量不大,安全性不高的数据.eg:搜索.查询等               2.post:将用户提交的

黑马程序员【JSP九大内置对象和四个作用域】转载

http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ---------- 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JSP中一共有九个以及四个作用域,在下面的文章中我们会一一讲解. 现在我们先来说一下四个作用域,以便描述各大对象都分属于什么作