(二十五)jsp九大内置对象(转)

专注改变人生。      2022-02-09     124

关键词:

--转载自孤傲苍狼博客

一、JSP运行原理

  每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
  由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
  JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

二、认识九个内置对象

NO. 内置对象 类型
1 pageContext javax.servlet.jsp.PageContext
2 request javax.servlet.http.HttpServletRequest
3 response javax.servlet.http.HttpServletResponse
4 session javax.servlet.http.HttpSession
5 application javax.servlet.ServletContext
6 config javax.servlet.ServletConfig
7 out javax.servlet.jsp.JspWriter
8 page java.lang.Object
9 exception java.lang.Throwable

 

 

 

 

 

 

 

  request,response,session,application,config这些对象在前面都已经作了详细的介绍,这里重点介绍一下剩下的pageContext对象,out对象,page对象。

三、内置对象使用说明

3.1、page对象

  page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可

3.2、out对象

  out对象用于向客户端发送文本数据。
  out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
  JSP页面中的out对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
  只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

  • 设置page指令的buffer属性关闭了out对象的缓存功能
  • out对象的缓冲区已满
  • 整个JSP页面结束

out对象的工作原理图

  

3.3、pageContext对象

  pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。

3.4、通过pageContext获得其他对象

  • getException方法返回exception隐式对象
  • getPage方法返回page隐式对象
  • getRequest方法返回request隐式对象
  • getResponse方法返回response隐式对象
  • getServletConfig方法返回config隐式对象
  • getServletContext方法返回application隐式对象
  • getSession方法返回session隐式对象
  • getOut方法返回out隐式对象

3.5、pageContext封装其它8大内置对象的意义

  如果在编程过程中,把pageContext对象传递给一个普通java对象,那么这个java对象将可以获取8大隐式对象,此时这个java对象就可以和浏览器交互了,此时这个java对象就成为了一个动态web资源了,这就是pageContext封装其它8大内置对象的意义,把pageContext传递给谁,谁就能成为一个动态web资源,那么什么情况下需要把pageContext传递给另外一个java类呢,什么情况下需要使用这种技术呢,在比较正规的开发中,jsp页面是不允许出现java代码的,如果jsp页面出现了java代码,那么就应该想办法把java代码移除掉,我们可以开发一个自定义标签来移除jsp页面上的java代码,首先围绕自定义标签写一个java类,jsp引擎在执行自定义标签的时候就会调用围绕自定义标签写的那个java类,在调用java类的时候就会把pageContext对象传递给这个java类,由于pageContext对象封装了对其它8大隐式对象的引用,因此在这个java类中就可以使用jsp页面中的8大隐式对象(request,response,config,application,exception,Session,page,out)了,pageContext对象在jsp自定义标签开发中特别重要。

 

3.6、pageContext作为域对象

1 public void setAttribute(java.lang.String name,java.lang.Object value)
2 public java.lang.Object getAttribute(java.lang.String name)
3 public void removeAttribute(java.lang.String name)
4 public java.lang.Object findAttribute(java.lang.String name)   //用来查找各个域中的属性的当要查找某个属性时,
//findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。

 

3.7、PageContext引入和跳转到其他资源

  •    PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。

  方法接收的资源如果以“/”开头, “/”代表当前web应用。

1   //使用pageContext的forward方法跳转到pageContextDemo05.jsp页面,/代表了当前的web应用
2    pageContext.forward("/pageContextDemo05.jsp");
3    //使用pageContext.forward(relativeUrlPath)替代RequestDispatcher.forward(relativeUrlPath)
4     //使用RequestDispatcher的forward方法实现的跳转方式
5    //pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);

   使用pageContext的include方法引入资源

 
1  <%
2      pageContext.include("/jspfragments/head.jsp");
3   %>
4      使用pageContext的include方法引入资源
5  <%
6     pageContext.include("/jspfragments/foot.jsp");
7  %>
 <%--
15 <jsp:include page="/jspfragments/head.jsp"/>
16 使用jsp:include标签引入资源
17 <jsp:include page="/jspfragments/foot.jsp"/>
18 --%>

 

jsp九大内置对象

      jsp九大内置对象  输入输出对象:        out--》输出信息流        request-->请求信息        response-->响应信息  作用域通信对象:        session-->会话     ... 查看详情

jsp九大内置对象

九大内置对象及其相应的作用域: JSP中九大内置对象为: request     请求对象      类型javax.servlet.ServletRequest    Request(作用域)response  &nb 查看详情

jsp九大内置对象

...+AJAX进行开发了JavaWeb了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。这些对象可以在JSP页面中调用,而不需要事先定义,... 查看详情

jsp九大内置对象

...+AJAX进行开发了JavaWeb了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。这些对象可以在JSP页面中调用,而不需要事先定义,... 查看详情

jsp的九大内置对象

九大内置对象 jspservlet 对象名类型使用范围requestHttpServletRequest请求浏览器--->服务器responseHttpServletResponse返回服务器--->浏览器configServletConfig用来获取web.xml中的信息applicationServletContext整个项目中的全局信息exceptionThr 查看详情

jsp九大内置对象

  jsp内置对象,是指可以不加声明和创建就可以在JSP页面脚本中使用的成员变量。       pageContext    类型:PageContext    代表:当前页面的上下文,它是java.lang.Object类的实例    作用:可以获取JSP... 查看详情

jsp九大内置对象

什么是JSP九大内置对象在JSP中无需创建就可以使用的9个对象,它们是:l out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;l config(ServletConfig):对应JSP生成的Servlet类中的ServletConfig;l page(当前JSP的类型)... 查看详情

jsp九大内置对象

内置对象特点:1.            由JSP规范提供,不用编写者实例化。2.            通过Web容器实现和管理3.  & 查看详情

五------jsp九大内置对象。

Jsp九大内置对象,当中最基本的是前五个对象。5-1out对象out对象是JSPWriter类的实例。是向client输出内容经常使用的对象。out对象经常使用的方法例如以下:1。out.println():向client打印字符串2,out.clear():清除缓冲区的内容,假设在flush... 查看详情

jsp九大内置对象

request     请求对象       类型javax.servlet.ServletRequest       作用域Requestresponse     响应 查看详情

面试题:jsp九大内置对象

我们常说的JSP有九大内置对象分别为:request、response、session、out、pagecontext、page、exception、application、config。我们知道,JVM只能识别java类,并不能识别JSP代码,那么这些对象是如何产生的的呢?这就要提到Servlet。Servlet就是用Jav... 查看详情

jsp中九大内置对象和四大作用域

一共有九大内置对象:request、response、out、session、application、pageContext、page、config、exception内置对象(又叫隐含对象),就是在jsp中,不需要创建(由服务器<容器>来创建),可以直接使用的对象。 request    &... 查看详情

jsp九大内置对象和四大作用域

...的都不是很全,今天我把各位大神的整理了一下。 JSP九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用。一、request对象:代表的是来自客户端的请求,例如我们在... 查看详情

jsp九大内置对象(代码片段)

1.什么是JSP九大内置对象  在jsp中无需创建就可以直接使用的9个对象,它们是:  *out(JspWriter):等同于response.getWriter(),用来向客户端发送文本数据;    >jsp的输出流,用来向客户端响应。  *config(ServletConfig):对应&... 查看详情

jsp九大内置对象响应类型

 内置对象            类型request            httpServletRequestout  &nbs 查看详情

jsp四大域对象和九大内置对象

四大域对象requestpagecontext  page域session  session域application context域九大内置对象resuestresponsesessionoutpagecontext  用于存取其他隐含对象 如requestresponseapplication等pageexcept 查看详情

jsp九大内置对象及其方法

内置对象包括requestresponsepageContextsessionapplicationoutconfigpageexception1.out(1)clear()清除缓冲区(2)flush()刷新缓冲区(3)newLine()创建新的一行(4)print(各种数据类型)显示数据内容(5)pringln(各种数据类型)换行显示数... 查看详情

整理一下jsp的九大内置对象和四大作用域

今天讲解了JSP的九大内置对象和四大作用域,简单整理一下以便以后观看。 JSP九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用。一、request对象:代表的是来自客... 查看详情