JSP 的内置对象
Jsp 的内置对象什么是内置对象: 在 jsp 开发中,会频繁使用到一些对象, 例如 HttpSession, ServletContext, ServletContext, HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以 Sun 公司设计 Jsp 时,在 jsp 页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!这些创建好的对象就叫内置对象!举例:servlet: HttpSession session = request.getSession(true); (需要开发者做)jsp:tomcat 服务器: HttpSession session = request.getSession(true);(不需要开发者做)开发者做的: session.getId();JSP-9 大内置对象(内置对象名 : 类型)request : HttpServletRequestresponse : HttpServletResponseconfig : ServletConfigapplication : ServletContextsession : HttpSessionexception : Throwablepage : Object(this)out : JspWriterpageContext : PageContextOut 对象 out 对象类型,JspWriter 类,相当于带缓存的 PrintWriterPrintWriter.wrier(内容) : 直接向浏览器写出内容 JspWriter.writer(内容) : 向 jsp 缓冲区写出内容(默认 8kb)JSP 页面缓冲机制 :JspWriter 首先写到 JspWriter 缓冲区, 然后当缓冲区满足下面 4 个条件时, 缓冲区的内容会向外写入 PrintWriter 到的对象当中,最后 PrintWriter 的 write 方法直接输送到浏览器中当满足以下条件之一,缓冲区内容写出:1)缓冲区满了 :2)刷新缓存区 : out.flush3)关闭缓存区 : buffer = "0kb"4)执行完毕 jsp 页面 :方法:out.flush() : 刷新缓存 out.getRemaining : 查看缓冲区剩余大小 out.getBufferSize : 查看缓冲区大小<%@ page language="java" import="java.util.*" pageEncoding="utf-8" buffer="1kb"%><%for(int i=1;i<=1024;i++){out.write("a");}//查看缓存区大小 System.out.println("当前缓存区大小:"+out.getBufferSize());//查看缓存区剩余大小 System.out.println("缓存区剩余大小:"+out.getRemaining());//刷新缓存//out.flush();response.getWriter().write("123");%></body></html>pageContext 对象 pageContext 对象的类型是 PageContext,叫 jsp 的上下文对象可以从 PageContext 对象中获取其他 8 个内置对象使用场景: 在自定义标签的时候,PageContext 对象频繁使用到!JspWriter out =pageContext.getOut();HttpServletRequest rquest = pageContext.getRequest();本身是一个域对象 ServletContext : context 域 HttpServletRequet : request 域 HttpSession : session 域 Servlet 中的域对象: ServletContext, HttpServletRequet, HttpSessionPageContext : page 域 (jsp 特有的)作用 : 保存数据和获取数据,用于共享数据
保存数据 1)默认情况下,保存到 page 域 : pageContext.setAttribute("name");2)可以向四个域对象保存数据 : pageContext.setAttribute("name",域范围常量)
获取数据 1)默认情况下,从 page 域获取 : pageContext.getAttribute("name")2)可以从四个域中获取数据 : pageContext.getAttribute("name",域范围常量)
域范围常量:PageContext.PAGE_SCOPEPageContext.REQUEST_SCOPEPageContext..SESSION_SCOPEPageContext.APPLICATION_SCOPE3)自动在四个域中搜索数据: pageContext.findAttribute("name");
顺序 : page 域 -> request 域 -> session 域- > context 域(application 域)
Jsp 中的四个域对象 :简介:pageContext : page 域 request : request 域 session : session 域 application : context 域域对象作用:保存数据和获取数据, 用于数据共享域对象方法:setAttribute("name",Object) : 保存数据 getAttribute("name") : 获取数据 removeAttribute("name") : 清除数据域对象作用范围:page 域 : 只能在当前 jsp 页面中使用 (当前页面)request 域 : 只能在同一个请求中使用 (转发)session 域 : 只能在同一个会话 (session 对象) 中使用 (私有的)context 域 : 只能在同一个 web 应用中使用(全局的)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"isErrorPage="true"session="true"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>pageContext 对象</title>
</head>
<body>从四个域中获取数据 page 域 :<% = pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>request 域 : <% = pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>session 域 : <% = pageContext.getAttribute("message",PageContext.SESSION_SCOPE) %><br/>context 域 : <% = pageContext.getAttribute("message",PageContext.APPLICATION_SCOPE) %><br/>
</body></html>
评论