博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp 九大内置对象和四大域对象
阅读量:3965 次
发布时间:2019-05-24

本文共 1908 字,大约阅读时间需要 6 分钟。

1、jsp 九大内置对象

jsp 中的内置对象,是指 Tomcat 在翻译 jsp 页面成为 Servlet 源代码后,内部提供的九大对象,叫内置对象。

在这里插入图片描述

2.jsp 四大域对象

四个域对象分别是:

  • pageContext (PageContextImpl 类) 当前 jsp 页面范围内有效
  • request (HttpServletRequest 类)、 一次请求内有效
  • session (HttpSession 类)、 一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
  • application (ServletContext 类) 整个 web 工程范围内都有效(只要 web 工程不停止,数据都在)

域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样。不同的是它们对数据的存取范围

虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。

四个域在使用的时候,优先顺序分别是,他们从小到大的范围的顺序。

pageContext ====>>> request ====>>> session ====>>> application

scope1.jsp 页面:

scope.jsp页面

<% // 往四个域中都分别保存了数据 pageContext.setAttribute("key","pageContext"); request.setAttribute("key","request"); session.setAttribute("key","session"); application.setAttribute("key","application");%>pageContext域是否值:<%=pageContext.getAttribute("key")%>
request域是否值:<%=request.getAttribute("key")%>
session域是否值:<%=session.getAttribute("key")%>
application域是否值:<%=application.getAttribute("key")%>
<%--方法一:<% request.getRequestDispatcher("/scope2.jsp").forward(request,response);%>--%><%--方法二:
是请求转发标签,它的功能就是请求转发 page 属性设置请求转发的路径 --%>
scope2.jsp页面:

scope2.jsp页面

pageContext域是否值:<%=pageContext.getAttribute("key")%>
request域是否值:<%=request.getAttribute("key")%>
session域是否值:<%=session.getAttribute("key")%>
application域是否值:<%=application.getAttribute("key")%>

测试 pageContext 作用域步骤: 直接访问 context1.jsp 文件

测试 request 作用域步骤

  • 1.在 context1.jsp 文件中添加转发到 context2.jsp(有数据)
  • 2.直接访问 context2.jsp 文件 (没有数据)

测试 session 作用域步骤

  • 1.访问完 context1.jsp 文件
  • 2.关闭浏览器。但是要保持服务器一直开着
  • 3.打开浏览器,直接访问 context2.jsp 文件

测试 application 作用域步骤

  • 1.访问完 context1.jsp 文件,然后关闭浏览器
  • 2.停止服务器。再启动服务器。
  • 3.打开浏览器访问 context2.jsp 文件

3、jsp 中的 out 输出和 response.getWriter 输出的区 别

response 中表示响应,我们经常用于设置返回给客户端的内容(输出) out 也是给用户做输出使用的。

在这里插入图片描述
由于 jsp 翻译之后,底层源代码都是使用 out 来进行输出,所以一般情况下。我们在 jsp 页面中统一使用 out来进行输出。避免打乱页面输出内容的顺序。
out.write() 输出字符串没有问题
out.print() 输出任意数据都没有问题(都转换成为字符串后调用的 write 输出)

深入源码,浅出

结论:在 jsp 页面中,可以统一使用 out.print()来进行输

转载地址:http://tluki.baihongyu.com/

你可能感兴趣的文章
Android事件分发、View事件Listener全解析
查看>>
Eclipse下使用Ant多渠道批量打包
查看>>
Eclipse下Ant自动打包,混淆和签名
查看>>
android 集成第三方静态库的编译方法
查看>>
linux环境下编译不成功
查看>>
Android系统时间制式的获取(24钟头制式/12小时制式)及UTC与本地时间的转换
查看>>
Android WebView Long Press长按保存图片到手机
查看>>
How To Install Java on Ubuntu with Apt-Get
查看>>
Setting up a Linux build environment
查看>>
BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3)
查看>>
TextView显示html图片点击图片放大等操作
查看>>
【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
查看>>
Android Fragment getActivity返回null解决
查看>>
Android(视频、图片)加载和缓存类库Glide
查看>>
Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
查看>>
Android音频系统之AudioPolicyService
查看>>
Android系统Root与静默安装
查看>>
Android Property实现介绍
查看>>
Android SystemProperties设置/取得系统属性的用法总结
查看>>
Android 休眠 FLAG_KEEP_SCREEN_ON
查看>>