1、内置对象的来历

JSP是由一些内置对象的,即不需要定义,也不需要我们主动创建,就可以直接使用的对象。当然,其对象名称也是固定的,无法修改,我们可以直接调用其相关方法。
在 [01] JSP的基本认识 已经说过JSP的本质,并明白了其运行的流程,容器会帮我们将JSP翻译成为Java类,其中会有一些“固定”代码,我们还是先看其核心方法:
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");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;//我们自定义的Java代码会被翻译到这个位置} catch (Throwable t) {if (!(t instanceof SkipPageException)) {out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {out.clearBuffer();} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}
}
x
1
public void _jspService(HttpServletRequest request, HttpServletResponse response) 

2
        throws java.io.IOException, ServletException {

3
4
    PageContext pageContext = null;

5
    HttpSession session = null;

6
    ServletContext application = null;

7
    ServletConfig config = null;

8
    JspWriter out = null;

9
    Object page = this;

10
    JspWriter _jspx_out = null;

11
    PageContext _jspx_page_context = null;

12
13
    try {

14
        response.setContentType("text/html");

15
        pageContext = _jspxFactory.getPageContext(this, request, response,

16
                null, true, 8192, true);

17
        _jspx_page_context = pageContext;

18
        application = pageContext.getServletContext();

19
        config = pageContext.getServletConfig();

20
        session = pageContext.getSession();

21
        out = pageContext.getOut();

22
        _jspx_out = out;

23
 

24
        //我们自定义的Java代码会被翻译到这个位置

25
26
    } catch (Throwable t) {

27
        if (!(t instanceof SkipPageException)) {

28
            out = _jspx_out;

29
            if (out != null && out.getBufferSize() != 0)

30
                try {

31
                    out.clearBuffer();

32
                } catch (java.io.IOException e) {

33
                }

34
            if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);

35
        }

36
    } finally {

37
        _jspxFactory.releasePageContext(_jspx_page_context);

38
    }

39
}

可以看到,在方法的开头中定义了一系列变量,在 try catch 块中对变量进行了赋值。根据容器翻译JSP文件的流程我们知道,我们自定义的Java代码都是加载在“固定”代码之后,也就是变量赋值之后,所以我们完全可以使用该方法体中内部定义的变量,以及方法的参数,并且可以顺利执行。
于是我们常用的JSP内置对象就这么有了:
类型     变量名     备注
HttpServletRequest     request    
HttpServletResponse     response    
PageContext     pageContext     JSP上下文对象,可以由此获取其他内置对象
HttpSession     session    
ServletContext     application    
ServletConfig     config    
JspWriter     out     可以像客户端输出内容,然而<%= %>更便捷
Object     page page = this 指翻译后当前类的对象,很少使用
Throwable     exception 错误页面才可使用
注:在某个页面抛出异常时(需页面定义 errorPage="xxx.jsp"),将转发至JSP错误页面。提供exception对象是为了在JSP中进行处理,只有在错误页面中才可以使用该对象。所以如果是作为错误页面则必须定义 <%@page isErrorPage="true" %>
那么内置对象的使用也很简单,直接在JSP页面的<% %>中嵌入即可,如 <%=request.getParameter("title)%>
至于内置对象的作用域,从他们的类型来说,已经不言而喻了,详情可以参考Servlet部分的作用域知识点。

转载于:https://www.cnblogs.com/deng-cc/p/8124540.html

[02] JSP内置对象相关推荐

  1. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  2. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  3. JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域

    JSP内置对象.基本动作指令.常见编译指令及四大作用域 (一) JSP工作原理 当一个jsp页面第一次被访问的时候,jsp将执行以下三个步骤,之后的访问速度会因为class文件已经生成而大大提高,当j ...

  4. jsp内置对象+Servlet

    一,jsp内置对象 1. request:请求对象: request.getParameter();得到一个参数:获得提交表单中唯一的值: request.getParameterValues();得 ...

  5. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  6. EL表达式,JSP内置对象

    基本语法格式 EL都是以 ${ 为起始.以} 为结尾的 ${ EL Expression} 示例: ${ "Helloworld" }  //输出字符串常量 ${ str }  / ...

  7. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

  8. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

  9. JSP内置对象及常用方法

    Jsp一共定义了9个对象:request.response.session.application.out.pagecontext.config.page.exception 1.request代表 ...

最新文章

  1. php 启动服务器监听
  2. VS远程开发(远程调试)编译报错:对‘xxx’未定义的引用(设置库依赖顺序)(已解决)pthread(项目-->属性-->链接器-->输入-->库依赖项)
  3. webuploader 获取文件md5_WebUploader API文档
  4. php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释
  5. 论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型
  6. 在路上---学习篇(一)Python 数据结构和算法 (3) --快速排序
  7. TortoiseSVN的安装与使用
  8. C文件流I/O操作:FILE类型
  9. 李炎恢python_前端教程:李炎恢jQuery视频教程 百度网盘
  10. 二级c语言题库手机软件,C语言二级考试题库手机下载-C语言二级考试题库APK下载 - Iefans...
  11. ucfirst() strtoupper() strtolower()
  12. 信号与电源完整性6:EMI电磁干扰分析及降低解决方案概述
  13. 用Python实现手机抓包,获取当当图书差评数据!
  14. 介绍一款LaTeX编辑器——LyX
  15. 《天空之城》助Twitter刷新纪录,新架构功不可没
  16. 针不戳 java后端开发岗面经分享,面经+知识点+总结
  17. Ubuntu+openni+nite+sensor+配置
  18. 【AD学习记录】为什么原理图和PCB都在同一个文件夹下面了却,无法生成PCB?
  19. 微信数据库最新的解密方式,C++代码解密微信数据库信息!
  20. CSDN博客访问量突破10万

热门文章

  1. Javascript 对象一(对象详解)
  2. 一篇介绍VC开发OCX的文章,写得太棒了!!!
  3. C语言的Trim, LTrim, RTrim
  4. vue旋转图片功能,旋转放大图片功能;vue旋转放大div元素
  5. centOs 7.2*64 ECS nginx安装教程
  6. 函数 devm_kzalloc()
  7. React开发(183):ant design 中treeSelect控制选中
  8. Taro+react开发(89):封装为一个函数渲染
  9. 前端学习(3225):字符串形式
  10. [css] 说说你对css盒子模型的理解