因为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. 测试函数——python编程从入门到实践

    测试函数 学习测试,得有测试的代码.下面是一个简单的函数: name_function.py def get_formatted_name(first, last): ""&quo ...

  2. SQL SERVER 查询所有表大小

    DECLARE @T TABLE ( [name] VARCHAR(max), [rows] INT, reserved VARCHAR(max), data_size VARCHAR(max), i ...

  3. Geoserver发布强制显示标签处理

    TextSymbolizer 增加如下配置: <!--  标签重叠也显示  --> <VendorOption name="conflictResolution" ...

  4. ComPtr的介绍以及使用

    ComPtr是为COM而设计的智能指针.它支持WindowsRT,也支持传统Win32.相比ATL里的CComPtr类,它有了一些提升. ComPtr包含在Windows 8.x SDK and Wi ...

  5. Spring概述学习笔记

    1.Spring概述 Spring致力于J2EE应用的各种解决方案,而不仅仅专注于某一层的方案. 可以说,Spring是企业应用开发的一站式选择,他贯穿于表现层.业务层.持久层. Spring并不想取 ...

  6. C# vb .net实现博物馆哑色框架特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的博物馆哑色框架效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授 ...

  7. 1 matplotlib绘制折线图

    from matplotlib import pyplot as plt #设置图形大小 plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y,color=&q ...

  8. MVC中根据后台绝对路径读取图片并显示在IMG中

    数据库存取图片并在MVC3中显示在View中 根据路径读取图片: byte[] img = System.IO.File.ReadAllBytes(@"d:\xxxx.jpg"); ...

  9. git安装用法和常用命令

    目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...

  10. Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程

    Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程 一丶获取进程以及父进程的pid 含义:    进程在内存中开启多个,操作系统如何区分这些进程, ...