一,什么是内置对象?

在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的三大域对象的更多相关文章

  1. 详解JSP九个内置对象

    [JSP]☆★之详解九个内置对象       在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2 ...

  2. JSP九个内置对象及指令、动作标签

    一.JSP九大内置对象 (一)JSP中无需创建就可以使用的9个对象 输入输出对象 1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是s ...

  3. JSP九个内置对象

    JSP内置对象有: 1.request对象      客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 2.r ...

  4. jsp jsp九个内置对象

       每个JSP页面在第一次被访问的时候,WEB容器都会把请求交给JSP引擎(即一个JAVA)程序.JSP引擎先将JSP翻译成一个_jspServlet实质也是一次servlet,然后按照 Servl ...

  5. java web学习总结(二十五) -------------------JSP中的九个内置对象

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

  6. JavaWeb---总结(十七)JSP中的九个内置对象

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

  7. JavaWeb学习总结(十七)——JSP中的九个内置对象

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

  8. javaWeb学习总结(8)- JSP中的九个内置对象(4)

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

  9. JavaWeb学习 (十六)————JSP中的九个内置对象

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

随机推荐

  1. Lubuntu下安装Python3.6

    Lubuntu下系统自带的Python版本是2.X,由于开发环境要求Python3,于是我们安装Python3.6 1.在终端输入以下命令: sudo add-apt-repository ppa:j ...

  2. 总结,为什么要重写hashset的hashcode()和equals()?

    看了非常多博客,怕自己忘记了,通俗易懂的总结如下 本人总结下: 重写前,比较地址,hashcode方法如果相等可能是同一个对象,所以再用equals再比内存地址 重写后,比较值,重写hashCode方 ...

  3. IOC注入框架——Unity中Web.Config文件的配置与调用

    Unity 应用程序块可以从 XML 配置文件中读取配置信息.配置文件可以是 Windows Forms 应用程序的 App.config 或者 ASP.NET 应用程序的 Web.config.当然 ...

  4. JSP——文件上传

    Web应用中,文件的上传是很常见的功能,今天在此记录下所学的感悟吧. 实现Web应用中文件的上传需要用到的核心组件是Commen-fileUpload,组件, 但还需要Common-IO组件的支持.可 ...

  5. Service Worker 离线无法缓存Post请求的问题解决

    许多非REST API甚至可以用于读取数据的POST请求:典型的例子是graphql.soap和其他rpcpapi.但是,Post请求不能在一个现成的渐进式Web应用程序中缓存和脱机使用.浏览器的缓存 ...

  6. RAMDISK 内存盘工具推荐

    好了直接推荐, 1.魔方内存盘  使用方便 ,但是关机后消失.绿色 2.Primo Ramdisk Ultimate Edition5.5 3.GiliSoft RAMDisk 4.QSoft RAM ...

  7. fedora 26 安装 mplayer smplayer

    dnf install mplayer dnf install smplayer 提示仓库 里没有这个软件 fedora默认不提供一些有版权争议的软件,非开源的项目包,所以需要用rpm fusion源 ...

  8. tp5邮件发送

    一.开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例) 1.登录163邮箱,在首页上找到“设置”. 2.选择开启的服务,一般都全选,POP3/SMTP/IM ...

  9. jquery选择器问题(找东西超级有用)

    $("[class='slider-container theme-green']").css('width','100%');就这么一行代码,很简单,这样就很容易找到唯一元素

  10. HTML5 关于一些本地操作 cookie,sessionStorage,localStorage

    1,b/s 开发中经常会使用到 cookie,大部分情况下,都是由后端代码实现,那么 js 怎么实现对 cookie 的操作呢? <!DOCTYPE html> <html> ...