博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp 9大内置对象
阅读量:4190 次
发布时间:2019-05-26

本文共 9993 字,大约阅读时间需要 33 分钟。

定义详解:

JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception

1、request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
2、response对象
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
3、session对象
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
4、application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
5、out 对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
6、pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
7、config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8、page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
9、exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
 

 

1、什么是JSP九大内置对象

在JSP中无需创建就可以使用的9个对象,它们是:
out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
config(ServletConfig):对应“真身”中的ServletConfig;
page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
exception(Throwable):只有在错误页面中可以使用这个对象;
request(HttpServletRequest):即HttpServletRequest类的对象;
response(HttpServletResponse):即HttpServletResponse类的对象;
application(ServletContext):即ServletContext类的对象;
session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。

在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。

在这9个对象中有两个对象不是每个JSP页面都可以使用的:exception、session。
在这9个对象中有很多前面已经学过的对象:out、request、response、application、session、config。

2、通过“真身”来对照JSP

我们知道JSP页面的内容出现在“真身”的_jspService()方法中,而在_jspService()方法开头部分已经创建了9大内置对象。

// request和response两个对象是方法参数。
  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;

    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;

    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                  null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

从这里开始,才是JSP页面的内容

   }…

3、pageContext对象

1. pageContext
  * 一个顶9个!
  * Servlet中有三大域,而JSP中有四大域,它就是最后一个域对象!
    > ServletContext:整个应用程序
    > session:整个会话(一个会话中只有一个用户)
    > request:一个请求链!
    > pageContext:一个jsp页面!这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据!

pageContext 仅限于在本jsp 页面使用,换了一个jsp 页面,pageContext 对象也就换了

      > 全域查找:pageContext.findAttribute("xxx");从小到大,依赖查找!

      > 获取其他8个内置对象:

3.1 域对象功能

pageContext也是域对象,它的范围是当前页面。它的范围也是四个域对象中最小的!
void setAttribute(String name, Object value);
Object getAttrbiute(String name, Object value);
void removeAttribute(String name, Object value);
3.2 代理其它域对象功能
还可以使用pageContext来代理其它3个域对象的功能,也就是说可以使用pageContext向request、session、application对象中存取数据,例如:
    向pageContext中存储数据
pageContext.setAttribute("x", "X");
//向request中存储数据
    pageContext.setAttribute("x", "XX", PageContext.REQUEST_SCOPE);
//向session中存储数据
pageContext.setAttribute("x", "XXX", PageContext.SESSION_SCOPE);
//向application中存储数据
pageContext.setAttribute("x", "XXXX", PageContext.APPLICATION_SCOPE);

void setAttribute(String name, Object value, int scope):在指定范围中添加数据;
Object getAttribute(String name, int scope):获取指定范围的数据;
void removeAttribute(String name, int scope):移除指定范围的数据;
Object findAttribute(String name):依次在page、request、session、application范围查找名称为name的数据,如果找到就停止查找。这说明在这个范围内有相同名称的数据,那么page范围的优先级最高!
3.3 获取其他内置对象
一个pageContext对象等于所有内置对象,即1个当9个。这是因为可以使用pageContext对象获取其它8个内置对象:
JspWriter getOut():获取out内置对象;
ServletConfig getServletConfig():获取config内置对象;
Object getPage():获取page内置对象;
ServletRequest getRequest():获取request内置对象;
ServletResponse getResponse():获取response内置对象;
HttpSession getSession():获取session内置对象;
ServletContext getServletContext():获取application内置对象;
Exception getException():获取exception内置对象;

 

常用方法:

 

out输出流对象

  隐藏对象out是javax.servlet.jsp.JspWriter类的实例服务器向客户输出的字符内容可以通过out对象输出。获取方法: PrintWriter out = response.getWriter();out对象常用的方法如下: 
1   void clear()   清除缓冲区的内容 
2   void clearBuffer()   清除缓冲区的当前内容 
3   void flush()   将缓冲内容flush到客户端浏览器 
4   int getBufferSize()   返回缓冲大小,单位KB 
5   int getRemaining()   返回缓冲剩余大小,单位KB 
6   isAutoFlush()   返回缓冲区满时,是自动清空还是抛出异常 
7   void close()    关闭输出流

request请求对象

  隐藏对象request是javax.servlet.ServletRequest类的实例,代表客户端的请求。request包含客户端的信息以及请求的信息,如请求那个文件,附带的地址参数等。每次客户端的请求都会产生一个request实例。request对象的常用方法如下: 
1   object getAttribute(String name)   返回指定属性的属性值 
2   Enumeration getAttributeNames()    返回所有可用属性名的枚举 
3  String getCharacterEncoding()   返回字符编码方式 
4   int getContentLength()   返回请求体的长度(以字节数) 
5   String getContentType()   得到请求体的MIME类型 
6   ServletInputStream getInputStream()   得到请求体中一行的二进制流 
7   String getParameter(String name)   返回name指定参数的参数值 
8   Enumeration getParameterNames()   返回可用参数名的枚举 
9   String[] getparameterValues(String name)    返回包含参数name的所有值的数组 
10   String getProtocol()   返回请求用的协议类型及版本号 
11   String getScheme()   返回请求用的计划名,如:http https及ftp等 
12   int getServerPort()   返回服务器接受此请求所用的端口号 
13   String getServerName()    返回接受请求的服务器主机名 
14   BufferedReader getReader()    返回解码过了的请求体 
15   String getRemoteAddr()    返回发送此请求的客户端IP地址 
16   String getRemoteHost()   返回发送此请求的客户端主机名 
17   void setAttribute(String key Object obj)   设置属性的属性值 
18   String getRealPath(String path)   返回一虚拟路径的真实路径 
19   void setCharacterEncoding(“gb2312”)   设置接受参数的字符集

response响应对象

  隐藏对象response是javax.servlet.ServletResponse类的实例,代表客户端的响应。服务器端的任何输出都通过response对象发送到客户端浏览器。每次服务器端都会响应一个response实例。response对象的常用方法如下: 
1   String getCharacterEncoding()    返回响应用的是何种字符编码 
2   ServletOutputStream getOutputStream()   返回响应的一个二进制输出流 
3   PrintWriter getWriter()   返回可以向客户端输出字符的一个对象 
4    void setContentLength(int len)   设置响应头长度 
5   void setContentType(String type)   设置响应的MIME类型 
6   sendRedirect(java.lang.String location)   重新定向客户端的请求 
7   void setCharacterEncoding(“gb2312”)   设置响应头的字符集

config配置对象

  隐藏对象config是javax.servlet.ServletConfig类的实例,ServletConfig封装了配置在web.xml中初始化JSP的参数。JSP中通过config获取这些参数。每个JSP文件中共有一个config对象。config对象的常用方法如表: 
1  String getInitParameter(String name)  返回配置在web.xml中初始化参数 
2  Enumeration getInitParameterNames()   返回所有的初始化参数名称 
3  ServletContext getServletContext()  返回ServletContext对象 
4  String getServletName  返回Servlet对象

session会话对象

  隐藏对象session是javax.servlet.http.HttpSession类的实例。session与cookie是记录客户访问信息的两种机制,session是用于服务器端保存用户信息,cookie用于在客户端保存用户信息。Servlet中通过request.getSession()来获取session对象,而JSP中可以直接使用。如果JSP中配置了<%@page session=”false”%>,则隐藏对象session不可用。每个用户对应一个session对象。session对象的常用方法如下: 
1   long getCreationTime()   返回Session创建时间 
2   public String getId()   返回Session创建时JSP引擎为它设的唯一ID号 
3   long getLastAccessedTime()   返回此Session里客户端最近一次请求时间 
4   int getMaxInactiveInterval()   返回两次请求间隔多长时间此Session被取消(ms) 
5   String[] getValueNames()   返回一个包含此Session中所有可用属性的数组 
6   void invalidate()  取消Session,使Session不可用 
7   boolean isNew()   返回服务器创建的一个Session,客户端是否已经加入 
8   void removeValue(String name)   删除Session中指定的属性 
9   void setAttribute(String key,Object obj)   设置Session的属性 
10, Object getAttribute(String name)   返回session中属性名为name的对象

application应用程序对象

  隐藏对象application是javax.servlet.ServletContext类的对象。application封装JSP所在Web应用程序的信息,例如web.xml中国配置的全局的初始化信息。Servlet中application对象需要通过ServletConfig.getServletContext()来获取。整个Web应用程序对应一个application对象。application对象常用的方法如下: 
1,  Object getAttribute(String name)  返回application中属性为name的对象 
2,  Enumeration getAttributeNames()   返回application中的所有属性名 
3,  void setAttribute(String name,Object value)  设置application属性 
4,  void removeAttribute(String name)   移除application属性 
5,  String getInitParameter(String name)  返回全局初始话函数 
6,  Enumeration getInitParameterNames()  返回所有的全局初始话参数 
7,  String getMimeType(String filename)  返回文件的文档类型,例如getMimeType(“abc.html”)将返回“text.html” 
8,  String getRealPath(String relativePath)  返回Web应用程序内相对网址对应的绝对路径

page页面对象

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

pageContext页面上下文对象

  隐藏对象pageContext为javax.servlet.jsp.PageContext类的实例。pageContext对象代表当前JSP页面编译后的内容。通过pageContext能够获取到JSP中的资源。pageContext常用方法如下: 
1    JspWriter getOut()   返回out对象 
2    HttpSession getSession()    返回Session对象(session) 
3    Object getPage()   返回page对象 
4    ServletRequest getRequest()    返回request对象 
5    ServletResponse getResponse()    返回response对象

6    void setAttribute(String name,Object attribute)    设置属性及属性值 ,在page范围内有效 

7    void setAttribute(String name,Object obj,int scope)   在指定范围内设置属性及属性值 ,int1=page,2=request,3=session,4=application 
8   public Object getAttribute(String name)   取属性的值 
9   Object getAttribute(String name,int scope)   在指定范围内取属性的值 
10   public Object findAttribute(String name)   寻找一属性,返回起属性值或NULL 
11   void removeAttribute(String name)   删除某属性 
12   void removeAttribute(String name,int scope)    在指定范围删除某属性 
13   int getAttributeScope(String name)   返回某属性的作用范围 
14  Enumeration getAttributeNamesInScope(int scope)   返回指定范围内可用的属性名枚举 
15   void release()   释放pageContext所占用的资源 
16  void forward(String relativeUrlPath)    使当前页面重导到另一页面 
17   void include(String relativeUrlPath)    在当前位置包含另一文件

Eexception异常对象

  隐藏对象exception为java.lang.Exception类的对象。exception封装了JSP中抛出的异常信息。要使用exception隐藏对象,需要设置<%@page isErrorPage”true”%>。隐藏对象exception通常被用来处理错误页面, 
 

 

转载地址:http://qwloi.baihongyu.com/

你可能感兴趣的文章
刚公布完价格就被骂?这款新机有点惨...
查看>>
李彦宏:百度回家了
查看>>
不会延期!iPhone 12S预计如期在9月发售:升级三星LTPO屏幕
查看>>
何小鹏:创业初期每月都去借钱 网易丁磊借了80万
查看>>
北漂眼泪滴落的速度,赶不上燕郊房价下跌的速度
查看>>
1.1万亿!华为第一!
查看>>
腾讯音乐2020全年财报惊艳:在线音乐付费用户达5600万,描绘中国数字音乐行业新蓝图...
查看>>
史上最贵!iPhone 12S系列9月亮相,全系标配激光雷达
查看>>
又增长了,微信及WeChat月活达12.25亿 !
查看>>
金山办公:因个人原因 葛珂辞去公司董事长职务
查看>>
哈苏相机加持!一加9 Pro海外抢先发布:采用120Hz LTPO屏幕
查看>>
iPhone 12 mini大幅砍单 苹果可能又要因为屏幕而向三星支付违约金
查看>>
小米11新旗舰通过3C认证:支持最高67.1W快充
查看>>
腾讯:人们回归工作导致四季度游戏收入减缓
查看>>
离开小米后 周受资将加入字节跳动担任CFO
查看>>
年初至今主动权益基金平均亏损2.96%
查看>>
市场观察人士:有充足代工产能支持 联发科3月份营收有望创下新高
查看>>
担心再次被起诉?马斯克已删除特斯拉可能几个月内成为最大公司推文
查看>>
潮流配色+定制音效 OPPO Enco X蓝调版真无线降噪耳机解析
查看>>
华为全款买了块支付牌照
查看>>