JSP 九个内置对象详解

原创文章,转载请注明出处。

JSP 一共有 9 个内置对象,它们分别是 out 对象、request 对象、response 对象、exception 对象、config 对象、page 对象、session 对象、application 对象、pageContext 对象。下面将分别对这 9 个内置对面分别做一个介绍,其中比较常用或比较重要的将会详细一些。

1、out 对象:out 对象用于向客户端浏览器输出各种数据,还负责对输出缓冲区进行管理。

out.print() 和 out.println() 都可以向客户端浏览器输出一行文本。

out.println() 和 out.newLine() 的换行效果在浏览器页面上都不能表现出来,必须查看源代码才能看到效果。

out.getBufferSize() 可以获取当前缓冲区大小。

out.getRemaining() 用于获取缓冲区的剩余字节数目。

out 对象的默认缓冲区大小是 8 kb,可以通过 page 编译指令对缓冲区大小进行设置:<%@ page buffer="10kb" %>。

out.flush() 用于强制刷新服务器输出缓冲区里的数据,也就是说可以手动将缓冲区里的数据输出到客户端浏览器,因为 jsp 文件的 page 编译指令中有一个 autoFlush 属性,默认是设置为 true 的,所以一般情况下这个方法不会被显式地调用。

out.clearBuffer() 用于清空缓冲区中的数据。

out.clear() 也是用于清空缓冲区中的数据,但是这个方法与 clearBuffer() 方法有一个区别,就是如果之前已经调用了 flush() 方法,clear() 方法会抛出异常,而 clearBuffer() 则不会。抛出异常的原因是在清空缓冲区的时候,缓冲区已经被刷新了。


2、request 对象:request 对象封装了来自客户端浏览器的各种信息,通常包括客户端向服务器提交的表单信息,以及其他信息,比如 cookie、客户端 IP、主机名等。通过request对象的 getParameter() 方法可以获取到用户提交的表单数据。 request 对象的大部分防范基本上都是用来处理客户端提交请求中的各种参数和选项。

request.getMethod() 方法用于输出请求的方法名(POST / GET .....)。

request.getRequestURI() 方法用于获取请求的URI的字符串,这个URI的字符串是从请求的主机名之后的第一个字符开始,到查询字符串结束的一段字符串。

request.getProtocol() 方法用于获取请求所使用的协议 (HTTP 1.1 /....)。

request.getServerName() 方法用于获取请求的服务器的名称 / IP。

request.getServerPort() 方法用于获取请求的服务器的端口。

request.getRemoteAddr() 方法用于获取客户端的IP地址。

request.getRemoteHost() 方法用于获取客户端的主机名。

request.getParameter() 方法用于获取客户端浏览器通过 post 或 get 方式提交的表单信息,其中方法的参数需要跟表单的名称保持一致,没有 setParameter() 方法。

request.setAttribute() 和 request.getAttribute() 方法用于在 web 组件之间共享信息。


3、response 对象:response 对象封装了服务器的响应信息,主要对客户端的请求进行回应。另外,它还负责处理 HTTP 连接信息,比如说设置 HTTP 文件头,设置 cookie 信息等。

response.setHeader() 方法设置字符串类型的头信息。

response.setIntHeader() 方法设置整型的头信息。

response.setDateHeader() 方法设置日期类型的头信息。

response.sendRedirect() 方法实现网页的跳转。

response.addCookie() 方法设置 cookie 。


4、exception 对象:exception 对象封装了 JSP 程序执行过程中发生的异常和错误信息。使用 exception 对象前,必须先把 page 编译指令的 isErrorPage 的属性设置为 true,否则是不能使用 exception 对象的。

exception.getMessage() 方法用于返回描述异常的信息。

exception.toString() 方法用于返回 exception 对象的字符串描述。

exception.printStackTrace() 方法用于打印异常的堆栈轨迹,这个方法会向标准的错误输出流打印错误信息,而不会输出到页面上。


5、config 对象:config 对象封装了应用程序的配置信息。config 对象是 ServletConfig 类的一个实例,这个类是用来配置 servlet 的。


6、page 对象:page 对象指向了当前 JSP 程序本身,它有点类似于 java 中的 this 指针。

page.toString() 输出 page 对象的字符串描述。

page.getClass() 用于返回当前的 Object 类。

page.hashCode() 用于返回 page 对象的 hashCode 的值。

page.equals() 用于比较对象是否与指定的对象相等。

page 对象还有几个与线程相关的方法,比如 notify()、notifyAll() 和 wait() 。


7、session 对象:session 对象用来保存会话信息,也就是说它可以在同一用户的不同请求之间共享数据。HTTP 协议是一个无状态协议,也就是说,每次客户端打开一个网页的时候,都会单独地打开一个服务器链接,服务器本身是不会保存之前客户端请求的任何信息的,而使用 session 对象进行辅助,则可以记录用户之前的请求信息,从而保证用户访问的连续状态。可以把 session 对象看做是在服务器端的保管箱,你第一次访问的时候在这个保管箱里放了一个钱包,第二次访问的时候放了一部手机,服务器知道这个手机和钱包是属于同一个主人,因为这个保管箱只有一把钥匙,这把钥匙就服务器发送到客户端浏览器的 JSESSIONID。第一次访问项目的时候,服务端就会发送一个 JSESSIONID 给客户端浏览器,以后客户端浏览器的每次请求都会自动带上这个 JSESSIONID,这样服务器就能识别出这个请求的发动者,从而判断出用户是否有权限访问指定的保管箱(session)。通过 JSESSIONID,你可以在服务端的session中执行存手机对象,存钱包对象,取手机对象,取钱包对象等操作。

session.getId() 用于获取 session 的 ID / 唯一标识符。

session.getCreationTime() 用于获取 session 的创建时间。

session.getLastAccessedTime() 用于获取 session 的最近访问时间。

session.getMaxInactiveInterval() 用于获取 session 的失效时间,单位为 s。

在 web.xml 文件中可以使用如下配置语句修改 session 的失效时间,下例修改为 10 分钟。

<session-config>
    <session-timeout>10</session-timeout>
</session-config>


8、application 对象:application 对象代表了当前的应用程序的上下文,它可以在不同的用户之间共享信息。application 对象存在于服务器的内存空间中,应用一旦启用,就会自动生成一个 application 对象,如果应用没有关闭,这个 application 对象就会一直被保持下去,直到应用被关闭,这个对象才会被销毁。相对于 session 对象而言, application 对象的生命周期更长。application 对象的这些特性为多个用户共享全局信息提供了方便,比如说共享当前的在线人数等等。

application.getServerInfo() 来返回服务器信息,不同的服务器返回的信息是不同的。

application.getServletContextName() 来返回当前的应用名称。

application.getVirtualServerName() 来获取主机的名称。


9、pageContext 对象提供了对 JSP 页面所有对象以及命名空间的访问。pageContext 对象是一个比较特殊的内置对象,它是 JSP 页面中所有其他对象功能的一个最大集成者,使用它可以访问其他所有的 JSP 内置对象,比如 request 对象,page 对象等等。

pageContext.getOut()、pageContext.getRequest()、pageContext.getResponse() 等类似的方法可以获取到JSP的其他内置对象。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值