jsp九个内置对象、四个域对象及Servlet的三大域对象
一,什么是内置对象?
在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.
在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId().
二,九大内置对象到底是哪九大呢?
内置对象名 | 类型 |
---|---|
request | HttpServletRequest |
response | HttpServletResponse |
config | ServletConfig |
application | ServletContext |
session | HttpSession |
exception | Throwable |
page | Object(this) |
out | JspWriter |
pageContext | PageContext |
三,解析几个内置对象
1)out对象对象,对象类型是JspWriter类,相当于带缓存的PrintWriter(不带缓存)
PrintWriter:write("内容") - - - - - 直接向浏览器输出内容
JspWriter:writer("内容") - - - - - 向jsp缓冲区写出内容
JspWriter当满足以下条件时之一时,缓冲区的内容写出:
a,缓冲区满了
b,刷新缓冲区
c,关闭缓冲区
d,jsp页面执行完毕
2)pageContext对象
pageContext的对象类型是PageContext,叫jsp的上下文对象.
pageContext作用:可以获取其他八个内置对象
//示例:
pageContext.getOut();
pageContext.getServletConfig()
- 1
- 2
- 3
使用场景:在自定义标签时会频繁使用到PageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象就能解决问题.
四,JSP中四大域对象
分类:
ServletContext context域
HttpServletRequet request域
HttpSession session域 --前三种在学习Servlet时就能接触到
PageContext page域 --jsp学习的
- 1
- 2
- 3
- 4
域对象的作用:保存数据,获取数据,共享数据.
保存数据:
pageContext.setAttribute("内容");//默认保存到page域
pageContext.setAttribute("内容",域范围常量);//保存到指定域中
//四个域常量
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE
获取数据:
pageContext.getAttribute("内容");
<p>pageContext.getAttribute("name",<span style="font-family:宋体;">域范围常量</span><span style="font-family:Calibri;">);</span></p>//自动在四个域中搜索数据
pageContext.findAttribute("内容");//在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)
域作用范围:
page域: 只能在当前jsp页面使用 (当前页面)
request域: 只能在同一个请求中使用 (转发)
session域: 只能在同一个会话(session对象)中使用 (私有的)
context域: 只能在同一个web应用中使用 (全局的)
Servlet的三大域对象
ServletContext context域
HttpServletRequet request域
HttpSession session域
- ServletConfig的解析;
/**
* 在javax.servlet包中,定义了ServletConfig接口。
* Servlet容器使用ServletConfig对象在Servlet初始化时向其传递配置信息。
*所谓的Serlvet配置信息,就是在Web应用程序中web.xml文件中配置有关Servlet的内容。
*
*一个ServletConfig对象对应web.xml中一对<serlvet></servlet><servlet-mapping></servlet-mapping>
*其生命周期:是一个servlet的实例化,初始化,就绪,销毁
*相比较与servletContext来说较短
*/
public class ServletConfig_Test extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig();
//getInitParameter(String name)方法:返回指定名称的初始化参数的值,如果参数不存在则返回null值。
String blog = servletConfig.getInitParameter("blog");
//getServletName()方法:获取web.xml文件中配置的Servlet名称。
String servletname = servletConfig.getServletName();
}
}
- ServletContext
/**
* servletContext对象是Servlet三大域对象之一,每个Web项目都拥有且唯一的一个ServletContext对象,
* 该对象是Web项目的全局对象或者上下文。Tomcat服务器在启动web项目时,会自动创建一个ServletContext对象,
* 在关闭时,会自动销毁这个ServletContext对象。ServletContext对象可以在整个Web应用中共享数据资源。
*
* 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象
* 实现通讯。
*
*1) 实现数据共享
*2) 获取全局配置参数
*3) 请求转发
*a) 拿取请求转发器,然后转发
*4) 获取资源文件
*5) 用来获得文件的MIME的类型.
*
*/
public class ServletContext_text extends HttpServlet{
ServletContext sc ;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config) ;
sc = config.getServletContext() ;//1.
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//第二种方式
ServletContext sc1 = this.getServletContext() ;
System.out.println(sc);
System.out.println(sc1 == sc);
//第三种方式
ServletContext sc2 = request.getSession().getServletContext() ;
System.out.println(sc2 == sc);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
原文转载: https://blog.csdn.net/zsp151296/article/details/78003099
jsp九个内置对象、四个域对象及Servlet的三大域对象的更多相关文章
- 详解JSP九个内置对象
[JSP]☆★之详解九个内置对象 在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2 ...
- JSP九个内置对象及指令、动作标签
一.JSP九大内置对象 (一)JSP中无需创建就可以使用的9个对象 输入输出对象 1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是s ...
- JSP九个内置对象
JSP内置对象有: 1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 2.r ...
- jsp jsp九个内置对象
每个JSP页面在第一次被访问的时候,WEB容器都会把请求交给JSP引擎(即一个JAVA)程序.JSP引擎先将JSP翻译成一个_jspServlet实质也是一次servlet,然后按照 Servl ...
- java web学习总结(二十五) -------------------JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb---总结(十七)JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习总结(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- javaWeb学习总结(8)- JSP中的九个内置对象(4)
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习 (十六)————JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
随机推荐
- 前端-JavaScript练习2
用户输入一个年份,判断这个年是否是闰年. 判断闰年条件: ① 非整百年数除以4,无余为闰,有余不闰: ② 整百年数除以400,无余为闰,有余不闰. 比如: 2000年,整百数年,就要用②公式,除以40 ...
- python 开发接口(一)
一.首先导入模块 pip install flask 二 1 import flas 2 import json import flask #1.启动一个服务 #2.接收到客户端传过来的数据 #3. ...
- 访问arcserver中的featureServer服务
1.在arcmap中加载图层,并发布成arcser服务(服务名dizhi),记住勾选FeatureServer服务 2.在arcserver manger中查看刚才发布的服务 3.访问featureS ...
- mybatis缓存的设计
继续用提问的方式来看Mybatis的缓存设计. 1.Mybatis如何开启缓存 Mybatis对查询结果进行缓存,所以缓存的对象为具体的Statement 通过在Statement上是否使用缓存来启用 ...
- centos7 安装远程桌面
https://www.linuxidc.com/Linux/2017-09/147050.htm https://blog.csdn.net/dazhi_1314/article/details/7 ...
- 使用腾讯地图和js,html实现地理位置的获取
转自http://blog.csdn.net/eele_one/article/details/64905218<!DOCTYPE html> <html> <head& ...
- Layout-2相关代码:3列布局代码演化[一]
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- ubuntu10.04换官方源
ubuntu10.04LTS官方已经不再维护,导致部分软件.库文件等下载有问题,可换以下源地址解决问题 deb http://old-releases.ubuntu.com/ubuntu lucid ...
- uni-app 调用支付宝支付
本文讲解 uni-app如何调用支付宝进行支付,服务端为 .net编写. 客户端:uni-app 编写 1.根据服务端生成的订单信息发起支付. 服务端:.net 编写 1.生成订单信息.2.接收支 ...
- 彻底搞懂Scrapy的中间件(二)
在上一篇文章中介绍了下载器中间件的一些简单应用,现在再来通过案例说说如何使用下载器中间件集成Selenium.重试和处理请求异常. 在中间件中集成Selenium 对于一些很麻烦的异步加载页面,手动寻 ...