欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入理解JSP:九大内置对象与四大域对象解析

最编程 2024-08-11 09:52:54
...

什么是内置对象?

在JSP开发中,会频繁使用到一些对象。例如HttpSession, ServletContext, ServletContext, HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计JSP时,在JSP页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可,这些创建好的对象就叫内置对象! 举例:

servlet: 
HttpSession session = request.getSession(true); (需要开发者做)

JSP:
tomcat服务器:  HttpSession session = request.getSession(true);(不需要开发者做)
开发者做的: session.getId();

9大内置对象

内置对象名

类型

request

HttpServletRequest

response

HttpServletResponse

config

ServletConfig

application

ServletContext

session

HttpSession

exception

Throwable

page

Object(this)

out

JspWriter

pageContext

PageContext

4大域对象

内置对象名

类型

pageContext

page域

request

request域

session

session域

application

context域

1)域对象作用: 用于数据共享, 保存数据 和 获取数据。

2)域对象方法: setAttribute(“name”,Object) 保存数据 getAttribute(“name”) 获取数据 removeAttribute(“name”) 清除数据

3)域对象作用范围: page域: 只能在当前jsp页面中使用(当前页面) request域: 只能在同一个请求中使用(转发) session域: 只能在同一个会话(session对象)中使用(私有的) context域: 只能在同一个web应用中使用。(全局的)

PageContext

这里说下pageContext, 因为它不仅是一个内置对象, 同时还是域对象.

pageContext内置对象

作为一个内置对象,PageContext封装了其他八个对象, 可以通过pageContext获取其他八个内置对象. 我们看下PageContext的源码:

    public abstract HttpSession getSession();

    public abstract Object getPage();

    public abstract ServletRequest getRequest();

    public abstract ServletResponse getResponse();

    public abstract Exception getException();

    public abstract ServletConfig getServletConfig();

    public abstract ServletContext getServletContext();

其中有getSession()用于获得HttpSession对象, getServletContext()用于获得ServletContext对象.

pageContext域对象

作为一个域对象, pageContext主要用于保存数据和获取数据.

保存数据

1)默认情况下,保存到page域 pageContext.setAttribute("name"); 2)可以向四个域对象保存数据 pageContext.setAttribute("name",域范围常量)

获取数据

1)默认情况下,从page域获取 pageContext.getAttribute("name") 2)可以从四个域中获取数据 pageContext.getAttribute("name",域范围常量) 域范围常量:

    PageContext.PAGE_SCOPE
    PageContext.REQUEST_SCOPE
    PageContext..SESSION_SCOPE
    PageContext.APPLICATION_SCOPE                       

3)自动在四个域中搜索数据 pageContext.findAttribute("name"); 顺序: page域 -> request域 -> session域- > context域(application域)