JSP隐藏对象及四个域对象

JSP隐藏对象

JSP有9大隐藏对象,其中常用的隐藏对象是:request、response、session、application。

out输出流对象

隐藏对象out是javax.servlet.jsp.JspWriter类的实例。服务器向客户端输出的字符类内容可以通过out对象输出。out对象的API如下:

方法名概述
void append(CharSequence cs)向out缓存中扩展字符类输出。当缓存满或者执行out.flush()操作时,这些内容会输出到客户端浏览器
void clear()清空要输出的内容
void flush()将缓存内容flush到客户端浏览器
void println()向客户端输出内容
boolean isAutoFlush()返回缓存满时是否自动flush。如果为false,缓存满时会抛出异常
int getBufferSize()返回缓存大小。单位KB
int getRemaining()返回缓存剩余大小,单位KB

demo2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>out输出流对象</title>
</head>
<body>
    <h1>out输出流对象</h1>
    <form action="/xjm/demo2.jsp" method="get">
        <input type="submit" value="clear" name="clear"/>
    </form>

    <%
        out.println("out对象打印:123<br/>");
        out.println("out缓存大小:" + out.getBufferSize() + "kb<br/>");
        out.append("append对象:123asd<br/>");
        out.println("out缓存占用大小:" + out.getRemaining() + "kb<br/>");
        out.println("out是否自动flush:" + out.isAutoFlush() + "<br/>");
        if(request.getParameter("clear") != null) {
            out.clear();
            out.println("clear over");
        }
    %>
</body>
</html>

运行结果
在这里插入图片描述
点击clear之后
在这里插入图片描述

request

隐藏对象out是javax.servlet.ServletRequest类的实例,代表客户端的请求。request包含客户端的信息以及请求的信息。每次客户端的请求都会变成一个request实例。具体用法类同于Servlet中的request。request对象的API如下:

方法名概述
void setAttribute(String name, Object value)在request域中保存一个对象。本页面内或者z转发(forward)之后的页面均可通过getAttribute(String name)方法获取该对象
Object getAttribute(String name)返回属性
String getMethod()返回请求方式,一般为GET或POST
String getParameter(String key)返回提交的参数
String[] getParameterValues(String key)返回提交到多个同名参数值。以数组形式返回
Enumeration getParameterNames()返回所有提交的参数名称
Cookie[] getCookie()返回所有Cookie
String getContextPath()返回应用程序路径
String getRequestURI()返回请求的URI路径
void setCharacterEncoding(String encoding)设置request的编码方式
String getHeader(String name)获取request头信息
Enumeration getHeaderNames()返回所有的request头名称
Dispacher getRequestDispacher()返回Dispatcher对象。Dispatcher对象可以执行转发(forward)操作
HttpSession getSession()返回内置对象session

response

隐藏对象out是javax.servlet.ServletResponse类的实例,代表着客户端的响应。服务器端的任何输出都要通过该对象发送到客户端浏览器。每次服务器都会想应一个response对象。具体用法类同于Servlet中的response。response对象的API如下:

方法名概述
void clear()清空暂存在缓存区的输出
void addCookie(Cookie cookie)设置Cookie
OutputStream getOutputStream()返回服务器输出流,可以通过该流输出二进制信息
void sendRedirect(String url)使页面重定向(redirect)到另一个页面
void setContentType(String contentType)设置文档类型
PrintWriter getOut()返回内置对象out
void setHeader(String name, String value)设置response头信息
void setStatus(int status)设置response状态码

config

隐藏对象out是javax.servlet.ServletConfig类的实例。ServletConfig封装了配置在web.xml中初始化的JSP参数。JSP通过config获取这些参数,一个JSP文件共用一个config对象。config对象的API如下:

方法名概述
String getInitParameter(String name)返回配置在web.xml中的初始化参数
Enumeration getInitParameterNames()返回所有的初始化参数名称
ServletContext getServletContext()返回application内置对象
String getServletName()返回Servlet的名称

session

隐藏对象out是javax.servlet.http.HttpSession类的实例。session与cookie是记录客户访问的两种机制,session用于在服务器端保存用户信息,cookie用于在客户端保存用户信息。在Servlet中需要通过request.getSession()方法来获取session对象,而JSP中可以直接使用。如果<%@ page session=“false” %>,则隐藏对象session不可用。每个用户对应一个session对象。session对象的API如下:

方法名概述
String getId()返回session的id
Object getAttribute(String name)返回属性
Enumeration getAttributeNames()返回session中所有属性名
long getCreateTime()返回该sessoin创建的时间
long getLastAccessedTime()返回该session最后一次访问时间
int getMaxInactiveInterval()返回seesoin的最大允许的间隔时间。单位为秒
void setAttribute(String name, Object value)设置session
void setMaxInactiveInterval(long second)设置最大允许时间间隔

application

隐藏对象out是javax.servlet.ServletContext类的实例。application代表了Servlet的上下文。application封装了JSP所在Web程序的信息。例如web.xml中配置的全局的初始化信息。Servlet中application对象需要通过ServletConfig.getServletContext()获取。整个Web应用对应一个application对象。application对象的API如下:

方法名概述
Object getAttribute(String name)返回属性
Enumeration getAttributeNames()返回application中所有属性名
void setAttribute(String name, Object value)设置application属性
void removeAttribute(String name)移除application属性
String getInitParameter(String name)返回全局初始化参数
Enumeration getInitParameterNames()返回所有的全局初始化参数名称
String getMimeType(String filename)返回文件的文档类型
String getRealPath(String relativePath)返回相对网址的绝对路径

page

隐藏对象out是javax.servlet.jsp.HttpJspPage类的实例。page对象代替了当前JSP页面,是当前JSP编译后的Servlet类的对象,类同于Java类中的this关键字。代表了JSP编译后的java文件。


pageContext

隐藏对象out是javax.servlet.jsp.PageContext类的实例。与application类似,pageContext代表JSP当前页面的上下文,也就是JSP界面编译后的内容。通过该对象可以获取JSP中的资源。可以通过xxxAttribute方法来操作当前页面的域对象,还可以通过xxxAttribute(…,int scope)方法来操作其他三个域对象,pageContext对象的API如下:

方法名概述
Object findAttribute(String name)依次从pageContext,request,session,applicaton中查找指定的属性,若找到则立即返回且结束该次查找,若找不到返回null
Object getAttribute(String name)返回属性
Object getAttribute(String name, int scope)返回指定范围内的属性。范围:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
Object setAttribute(String name, Object value)设置属性
Object setAttribute(String name, Object value, int scope)在指定范围内的属性
JspWriter getOut()返回内置对象out
Object getPage()返回内置对象page
ServletRequest getRequest()返回内置对象request
ServletResponse getResponse()返回内置对象response
ServletSession getSession()返回内置对象session

scope值均为int型静态变量:

  • PAGE_SCOPE:1
  • REQUEST_SCOPE:2
  • SESSION_SCOPE:3
  • APPLICATION_SCOPE:4
    使用时,可直接使用对应的int值,也可通过pageContext内置对象获取。
    e.g. pageContext.PAGE_SCOPE

exception

隐藏对象out是javax.lang.Exception类的实例。它封装了JSP抛出的异常信息。
如果要使用exception对象,首先要设置<%@ page isErrorPage=“true” %>,exception通常用来处理错误界面。


JSP四个域对象

JSP有4个域对象,依照作用范围从大到小分别为:application、session、request、pageContext。

application当前项目中均可使用。session一次会话中可使用,一次回话可以有多次请求。request一次请求中可使用。pageContext只在当前页面有效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值