一,什么是内置对象?

在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.

在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId().


二,九大内置对象到底是哪九大呢?

内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter
pageContext PageContext

三,解析几个内置对象

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()
 
  • 1
  • 2
  • 3

使用场景:在自定义标签时会频繁使用到PageContext对象;或者是定义一个方法需要用到多个对象时,传一个pageContext对象就能解决问题.


四,JSP中四大域对象

分类:

ServletContext     context域
HttpServletRequet request域
HttpSession session域 --前三种在学习Servlet时就能接触到
PageContext page域 --jsp学习的
 
  • 1
  • 2
  • 3
  • 4

域对象的作用:保存数据,获取数据,共享数据.

保存数据:
pageContext.setAttribute("内容");//默认保存到page域
pageContext.setAttribute("内容",域范围常量);//保存到指定域中
//四个域常量
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE
获取数据:
pageContext.getAttribute("内容");
<p>pageContext.getAttribute("name",<span style="font-family:宋体;">域范围常量</span><span style="font-family:Calibri;">);</span></p>//自动在四个域中搜索数据
pageContext.findAttribute("内容");//在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)

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


Servlet的三大域对象

ServletContext     context域
HttpServletRequet request域
HttpSession session域
  • ServletConfig的解析;
/**
* 在javax.servlet包中,定义了ServletConfig接口。
* Servlet容器使用ServletConfig对象在Servlet初始化时向其传递配置信息。
*所谓的Serlvet配置信息,就是在Web应用程序中web.xml文件中配置有关Servlet的内容。
*
*一个ServletConfig对象对应web.xml中一对<serlvet></servlet><servlet-mapping></servlet-mapping>
*其生命周期:是一个servlet的实例化,初始化,就绪,销毁
*相比较与servletContext来说较短
*/
public class ServletConfig_Test extends HttpServlet{ @Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig(); //getInitParameter(String name)方法:返回指定名称的初始化参数的值,如果参数不存在则返回null值。
String blog = servletConfig.getInitParameter("blog");
//getServletName()方法:获取web.xml文件中配置的Servlet名称。
String servletname = servletConfig.getServletName(); } }
  • ServletContext
/**
* servletContext对象是Servlet三大域对象之一,每个Web项目都拥有且唯一的一个ServletContext对象,
* 该对象是Web项目的全局对象或者上下文。Tomcat服务器在启动web项目时,会自动创建一个ServletContext对象,
* 在关闭时,会自动销毁这个ServletContext对象。ServletContext对象可以在整个Web应用中共享数据资源。
*
* 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象
* 实现通讯。
*
*1) 实现数据共享
*2) 获取全局配置参数
*3) 请求转发
*a) 拿取请求转发器,然后转发
*4) 获取资源文件
*5) 用来获得文件的MIME的类型.
*
*/
public class ServletContext_text extends HttpServlet{
ServletContext sc ; @Override
public void init(ServletConfig config) throws ServletException {
super.init(config) ;
sc = config.getServletContext() ;//1.
} public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//第二种方式
ServletContext sc1 = this.getServletContext() ;
System.out.println(sc);
System.out.println(sc1 == sc);
//第三种方式
ServletContext sc2 = request.getSession().getServletContext() ;
System.out.println(sc2 == sc);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }
原文转载: https://blog.csdn.net/zsp151296/article/details/78003099

最新文章

  1. 使用xUnit,EF,Effort和ABP进行单元测试(C#)
  2. 表格与ckeckbox的全选与单选
  3. React Native 之TabBarIOS
  4. HDU 4938 Seeing People(2014 Multi-University Training Contest 7)
  5. python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)
  6. 网站实时协作JavaScript库 TogetherJS
  7. java中的构造函数
  8. Notes of the scrum meeting(11/1)
  9. unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条
  10. SIGGRAPH
  11. python学习第八天 -- 迭代
  12. HTML&amp;CSS基础学习笔记1.24-input标签的单选与多选
  13. hdu 4740
  14. 20164301 Exp2 后门原理与实践
  15. 2018-2019-2 20175311 实验二 《Java开发环境的熟悉》实验报告
  16. TensorFlow占位符操作:tf.placeholder_with_default
  17. exists 的使用
  18. The databse returned no natively generated identity value问题
  19. jdk下载及安装
  20. (25)HttpClient session

热门文章

  1. selenium 添加动态隧道代理
  2. Spring AOP使用注解记录用户操作日志
  3. MVC JsonResult 结果返回
  4. Windows下通过pip安装PyTorch 0.4.0 import报错
  5. 常见手机的设备分辨率、viewport和devicePixelRatio
  6. [论文阅读]MobileNetV2: Inverted Residuals and Linear Bottlenecks
  7. 【C语言基础】变量
  8. apache_php_mysql
  9. opencv常用api
  10. anaconda安装Opencv报错:Could NOT find PythonLibs: Found unsuitable version &quot;2.7.6&quot;,