因为jsp实质是一个Servlet对象:jsp在第一次访问时会被Web容器翻译成Servlet,在执行过程:第一次访问---->inex.jsp---->index_jsp.java---->编译运行

比如我们新建一个index.jsp对象,则可以在Tomcat的work目录查到index_jsp.java和index_jsp.class,该class文件就是一个Servlet,Servlet容器就会按照处理Servlet处理它

通过看源码可知

,该类继承了HttpJspBase,而HttpJspBase是HttpServlet一个子类,所以该类是一个Servlet

我们知道Servlet有service方法,而在service方法中有九个对象定义并初始化完成,我可以在直接在jsp脚本使用这九个对象,这九个对象就是jsp九大隐式对象

名称

类型

描述

out

javax.servlet.jsp.JspWriter

用于页面输出

request

javax.servlet.http.HttpServletRequest

得到用户请求信息,

response

javax.servlet.http.HttpServletResponse

服务器向客户端的回应信息

config

javax.servlet.ServletConfig

服务器配置,可以取得初始化参数

session

javax.servlet.http.HttpSession

用来保存用户的信息

application

javax.servlet.ServletContext

所有用户的共享信息

page

java.lang.Object

指当前页面转换后的Servlet类的实例

pageContext

javax.servlet.jsp.PageContext

JSP的页面容器

exception

java.lang.Throwable

表示JSP页面所发生的异常,在错误页中才起作用

out对象:类型是JspWriter,它的作用是通过out.write()将页面信息向客户端。out的默认缓冲区是8kb,可在<%@ page %>里设置buffer,若buffer为0,则关闭out缓冲区,那么页面内容则写到response缓冲容器中。

request对象:是客户端向服务器发送的一个请求,请求包括请求行,请求头和请求体,我们可以相应的方法获取它们,最重要的是我们可以通过request相应的方法来获取客户端传来的数据,其中常用的方法有getParameter(String name)(通过参数name值获取值),返回对象是一个String类型,request.getParameterMap()(获取所有参数,参数封装到一个Map<String,String[]>数组里),返回值是Map<String,String[]>等方法。

response对象:是服务器相应客户端的一个对象,它可以设置相应行、头和体,可以重定向网页,设置输出缓冲。

fonfig对象:是javax.servlet.ServletConfig一个实例,可以获得web.xml初始化的参数。

session对象:将数据存储在服务器端,为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。我们可以通过request.getSession()获取当前会话的Session对象(有则获取,没有则会新创建一个)。由于session也是一个域对象,所以Session对象具有三个域操作方法session.setAttribute(String name,Object obj);  session.getAttribute(String name);  session.removeAttribute(String name);通过名字我们可知其意思。还有一点就是session默认生命周期是30分钟,但对服务器进行操作时开始计时。我们也可以在web.xml中配置它的生命周期。当然我们也可以手动关闭,session.invalidate()(手动销毁session对象);

*****当浏览器关闭时,session对象没有被销毁,因为浏览器关闭并没有给服务器传来销毁session的消息,所以session还存在。但是重新打开浏览器,就找不到之前的session呢?因为当关闭浏览器时cookie也就不存在了,有英文Servlet容器把session标识ID作为一个cookie保存在客户端浏览器中,所以我们就不能找到之前的session。

application对象:该对象代表整个web应用,整个web应用共享一个application对象,可以让JSP和Servlet共享数据。例如通过application.setAttribute(name,value)设置值,整个web应用都可以通过application.getAttribute(name)来获取value。还可以使用application对象获取初始化参数。

page对象:就是该jsp页面的对象。(实际开发用的不多)

pageContext对象:表示jsp页面上下文对象,当它和page对象不是一回事。pageContext也是一个域对象,所有它也有域的操作方法:setAttribute(String name,Object obj);getAttribute(String name);removeAttrbute(String name)。pageContext可以向指定的其他域中存取数据,例如pageContext.setAttribute("name", "lisi", pageContext.REQUEST_SCOPE)就是向request域存入name为lisi的一个对象。

pageContext一个重要方法是findAttribute(String name),它会从依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找。(查找从小到大查找---域的范围,pageContext<request<session<application)。

pageContext还可以获取其它8大隐式对象:例如pageContext.getRequest()获取request。当我们需要很多隐式对象作为参数时,我们可以只用pageContext一个对象作为参数,通过它的方法获取其他隐式对象。

exception:exception对象是一个包含上一页抛出的异常的包装器。它通常用于生成对错误条件的适当响应。

jsp四大域对象的范围:

page域(pageContext):当前jsp页面范围

    request域:一次请求

    session域:一次会话

    application域:整个web应用

今天学习jsp,总结一下。正好把之前学习的东西回顾一下,有好多知识都是学了,但是又忘了,自己又通过网上查找和之前的学习资料查找,又拾起了一些被丢到的。学子java也一样,要温故。

如果有大佬发现错误,请指出,谢谢,向您学习!!

JSP九大隐式对象和四大域对象-----面试的更多相关文章

  1. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  2. JSP九大隐式对象

    JSP九大隐式对象 request HttpServletRequest response HttpServletResponse session HttpSession application Se ...

  3. JSP页面以及JSP九大隐式对象

    €JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. €JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...

  4. JSP 九大隐式对象

    final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; fina ...

  5. JavaWeb学习记录(十七)——JSP九大隐式对象

    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOE ...

  6. 四大域对象,和jsp的九大隐式对象,已经el表达式的11个隐式对象

    四大域对象 1.PageContext :页面范围的数据 2.ServletRequest:请求范围的数据 3.HttpSession:回话范围的数据 4.ServletContext:应用范围的数据 ...

  7. JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标 ...

  8. JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1.    JSP模板元素:JSP中HT ...

  9. jsp学习--JSP运行原理,九大隐式对象和JSP常用标签

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

随机推荐

  1. Tarjan求有向图强连通分量 BY:优少

    Tarjan算法:一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法. 定义给出之后,让我们进入算法的学习... [情境引入] [HAOI2006受欢迎的牛] 题目描述: 每头 ...

  2. Scratch学习中需要注意的地方,学习Scratch时需要注意的地方

    在所有的编程工具中,Scratch是比较简单的,适合孩子学习锻炼,也是信息学奥赛的常见项目.通常Scratch学习流程是,先掌握程序相关模块,并且了解各个模块的功能使用,然后通过项目的编写和练习,不断 ...

  3. java网站架构演变过程

    网站架构演变过程. .传统架构.传统的SSH架构,分为三层架构web控制层.业务逻辑层.数据库访问层..传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务 ...

  4. RabbitMQ之消息模式(下)

    目的: RabbitMQ之消息模式(上):https://www.cnblogs.com/huangting/p/11994539.html 消费端限流 消息的ACK与重回队列 TTL消息 死信队列 ...

  5. mysql执行顺序与join连接

    mysql加载顺序 手写顺序 SELECT DISTINCT <select list> FROM <left_table> join <join_type> JO ...

  6. MEF在WCF REST中实际应用2(Global.asax注册)

    IOCContainer文件: public class IOCContainer { /// <summary> /// 容器 /// </summary> public s ...

  7. AngularJS重型前端框架

    一.AngularJs AngularJs是一种前端的重型框架,而现在正在被Aue.js所取代.而Aue的和AngularJs大同小异. AngularJs核心功能有MVC.模块化.自动化双向数据绑定 ...

  8. python预习day1

    计算机基础 cpu 大脑 内存 临时记忆 硬盘 永久记忆 输入设备 眼睛 耳朵 输出设备 嘴巴 操作系统 控制计算机硬件工作流程的 应用程序 安装在操作系统之上的软件 python简介 python是 ...

  9. 30个关于Shell脚本的经典案例(中)

    本文目录 11.iptables自动屏蔽访问网站频繁的IP 12.判断用户输入的是否为IP地址 13.判断用户输入的是否为数字 14.给定目录找出包含关键字的文件 15.监控目录,将新创建的文件名追加 ...

  10. html5的基本介绍

    前言 (1)什么是HTML? 指超文本标记语言(Hyper Text Markup Language); 是用来描述网页的一种语言: 不是编程语言,是一种标记语言: (更多详细内容,百度:https: ...