JSP隐藏对象及四个域对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42267300/article/details/87636053

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只在当前页面有效。

猜你喜欢

转载自blog.csdn.net/qq_42267300/article/details/87636053