专栏首页along的开发之旅JSP的9大内置对象和4大域对象

JSP的9大内置对象和4大域对象

什么是内置对象?

在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域)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • macos git: 'credential-wincred' is not a git command. See 'git --help'

    git config --global credential.helper osxkeychain

    望天
  • Android Studio 最新debug工具及与老版本工具对应关系

    原文链接:https://developer.android.com/studio/profile/monitor

    望天
  • HttpServlet中的service和doGet的区别

    可见默认的doGet实现只是把错误发送出去. 所以, 为了使我们的web正常展示, 应该重写我们的doGet方法, 在doGet中完成相应逻辑. 这样当用户访问...

    望天
  • SSH构造struts2项目

    ydymz
  • 数据清理的遗留问题处理(r6笔记第87天)

    最近处理一个遗留问题,感觉手动修复真是让人抓狂,所以花了点力气写了一个半自动的脚本,总算从这个繁琐的工作中解放出来了。 问题的背景如下图所示。 存在一个很大的统...

    jeanron100
  • 重新学习Mysql数据库1:无废话MySQL入门

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • Django ORM 一对多 和 多对多

    kirin
  • 「网站优化」网站优化如何快速优化网站到首页——一一揭秘

    网站想要优化到搜索引擎首页是必要的,但是需要下很大的功夫的。如何优化是一个所有SEOer想要学会的技巧。

    大脸猫
  • 科学瞎想系列之四十九 低速电机为什么那么难搞

    高速和低速电机都是为适应直驱要求而生的,刚说完高速电机难搞,宝宝们可能会以为低速电机好搞,错!低速电机同样也不是那么好玩的。关于低速电机的定义与上一篇高速电机...

    标准答案
  • 《中国有嘻哈》爆红,给许知远们深深上了一课?

    今年暑期的文娱圈,出现了两匹黑马。一匹是《战狼2》,票房破55亿元刷新国产电影纪录;另一匹是网络综艺节目《中国有嘻哈》,上线4小时点播量突破1亿次,总播放量超过...

    罗超频道

扫码关注云+社区

领取腾讯云代金券