JSP九大隐式对象和四大域对象-----面试
因为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九大隐式对象和四大域对象-----面试的更多相关文章
- JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象
1 什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的 ...
- JSP九大隐式对象
JSP九大隐式对象 request HttpServletRequest response HttpServletResponse session HttpSession application Se ...
- JSP页面以及JSP九大隐式对象
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...
- JSP 九大隐式对象
final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; fina ...
- JavaWeb学习记录(十七)——JSP九大隐式对象
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOE ...
- 四大域对象,和jsp的九大隐式对象,已经el表达式的11个隐式对象
四大域对象 1.PageContext :页面范围的数据 2.ServletRequest:请求范围的数据 3.HttpSession:回话范围的数据 4.ServletContext:应用范围的数据 ...
- JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标 ...
- JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HT ...
- jsp学习--JSP运行原理,九大隐式对象和JSP常用标签
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
随机推荐
- php中让数组顺序随机化,打乱顺序等
php中有很多排序的函数,sort,rsort,ksort,krsort,asort,arsort,natcasesort,这些函数用来对数组的键或值进行这样,或那样的排序. 可以终究有时候还需要一些 ...
- day13——重要内置函数、匿名函数、闭包
day13 内置函数2 重要的 abs():求绝对值--返回的都是正数 # lst = [-1,-2,-3] # for i in lst: # print(abs(i)) # print([abs( ...
- 改變帳款性質別以利排序沖帳才不會有問題,把19->17,把12->17
Cxrp400 應收 LET ls_sql = SELECT xrccdocno,xrccseq,xrcc001,xrca035,xrca014, , xrca015,xrca006,xrcc008, ...
- liunx下Oracle安装
1. 引言 将近一个月没有更新博客了,最近忙着数据库数据迁移工作:自己在服务器上搭建了oracle数据库,一步步走下来遇见很多BUG:现在自己记录下,方便以后有用上的地方: 2. 准备工作 oracl ...
- sso cas 坑
一个中文文档地址: http://www.cassso-china.cn/apereo_github_cas_5.2/apereo.github.io/cas/5.2.x/ ============= ...
- Node中require第三方模块的规则
Node.js中使用CommonJs模块化机制,通过npm下载的第三方包,我们在项目中引入第三方包都是:let xx = require('第三方包名'),究竟require方法加载第三方包的原理机制 ...
- CSS-图片整合笔记
注意点: 概念:图片整合技术( css sprite 或 精灵图).通过将多个图片融合到一张图片,然后通过CSS background 背景定位技术技巧布局网页背景 优势:减少 http iis 请求 ...
- Appscan漏洞之已解密的登录请求
本次针对 Appscan漏洞 已解密的登录请求 进行总结,如下: 1.1.攻击原理 未加密的敏感信息(如登录凭证,用户名.密码.电子邮件地址.社会安全号等)发送到服务器时,任何以明文传给服务器的信息都 ...
- windows xp远程连接
本节将用到windows网络共享,实现外网可以远程连接局域网内的任意主机 实验环境 两台windows xp虚拟机(内网+外网),一台主机 配置外网虚拟机 首先,为虚拟机添加两块网卡.一块作为网关(内 ...
- 使用Blynk打造一款物联网产品
前言 一直以来想自己打造一款物联网产品. 围绕这个话题写过一些文章: 一辆树莓派可编程小车的问题 基于树莓派的积木化编程解决方案 物联网相关开源项目整理 物联网.开源硬件与开源社区 之前在一辆树莓派可 ...