一,什么是内置对象?
创建好的对象就叫做内置对象.
在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;
在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId()
二,九大内置对象到底是哪九大呢?
out对象
out内置对象javax.servlet.jsp.JspWriter对象的一个实例,用于在响应中发送内容。
初始化JspWriter对象根据页面是否缓存而不同地实例化。缓冲可以通过使用page指令的buffered ='false’属性来关闭。
JspWriter对象包含与java.io.PrintWriter类大部分相同的方法。
但是,JspWriter还有一些额外的方法用来处理缓冲。
与PrintWriter对象不同,JspWriter会抛出IOExceptions异常。request对象
request对象是javax.servlet.http.HttpServletRequest对象的一个实例。
每当客户端请求页面时,JSP引擎将创建一个新对象来表示该请求。
request对象提供了获取包括表单数据,Cookie,HTTP方法等HTTP头信息的方法。
response对象
response对象是javax.servlet.http.HttpServletResponse对象的一个实例。
就像服务器创建request对象一样,它还创建一个对象来表示对客户端的响应。
response对象还定义了处理创建新HTTP头的接口。通过此对象,JSP程序员可以添加新的Cookie或日期戳,HTTP状态代码等。
session对象
session对象是javax.servlet.http.HttpSession的一个实例,其行为与Java Servlet下的会话对象行为完全相同。
session对象用于跟踪客户端请求之间的客户端会话。
application对象
application对象是生成的Servlet的ServletContext对象的直接包装,实际上是javax.servlet.ServletContext对象的一个实例。
application对象是JSP页面在其整个生命周期中的表示。 当JSP页面被初始化时,将创建此对象,
并且在JSP页面被jspDestroy()方法删除时application对象也将被删除。
通过向application对象添加属性值,可以确保组成Web应用程序的所有JSP文件都可以访问它。
config对象
config对象是javax.servlet.ServletConfig的实例化,是生成的servlet的ServletConfig对象周围的直接包装。
pageContext对象
pageContext对象是javax.servlet.jsp.PageContext对象的一个实例。pageContext对象用于表示整个JSP页面。
page对象
page对象是对该页面实例的实际引用。可以认为它是表示整个JSP页面的对象。
page对象是this对象的直接同义词。
exception对象
exception对象是一个包含上一页抛出的异常的包装器。
它通常用于生成对错误条件的适当响应。
三,解析几个内置对象
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()
使用场景:在自定义标签时会频繁使用到PageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象就能解决问题.
四,JSP中四大域对象
分类:
ServletContext context域
HttpServletRequest request域
HttpSession session域 --前三种在学习Servlet时就能接触到
PageContext page域 --jsp学习的
域对象的作用:保存数据,获取数据,共享数据.
保存数据:
pageContext.setAttribute("内容");//默认保存到page域
pageContext.setAttribute("内容",域范围常量);//保存到指定域中
//四个域常量
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE
获取数据:
pageContext.getAttribute("内容");
pageContext.getAttribute("name",域范围常量);
//自动在四个域中搜索数据 pageContext.findAttribute("内容");//在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)
域作用范围:
page域: 只能在当前jsp页面使用 (当前页面)
request域: 只能在同一个请求中使用 (转发)
session域: 只能在同一个会话(session对象)中使用 (私有的)
context域: 只能在同一个web应用中使用 (全局的)