JSP九大隐式对象

JSP九大隐式对象

 
1) request  HttpServletRequest
2) response  HttpServletResponse
3) session  HttpSession
4) application  ServletcContext
5) config    ServletConfig
6) exception (特殊情况下使用)
7) page     this(本JSP页面)
8) out       JspWriter(带缓冲的PrintWriter)
9) pageContext (使普通Java类可访问WEB资源,自定义 标签常用)
 
   out隐式对象-out的类型是JspWriter,它是具体缓存功能的PrintWriter对象
       1.out隐式对象用于向客户端发送文本数据。
     2.out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
     3.JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
     4.只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
a) 设置page指令的buffer属性关闭了out对象的缓存功能
b) out对象的缓冲区已满
c) 整个JSP页面结束
     
 
  session对象

1.访问jsp页面时,默认web服务器创建session
2.访问servlet时,必须通过request.getSession()才能创建session
3.在转发和重定向情况下,session域不会销毁

    application=ServletContext对象
 
  config--取得jsp在web.xml文件中的映射信息
 
    exception--该对象只能在<%@isErroPage="true"%>的情况下,容器才会创建,否则容器不予创建

     

JSP九大隐式对象--pageContext

  pageContext对象是JSP技术中最重要的一个对象,它代表当前JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如包含和跳转其它资源、检索其它域对象中的属性等。 

a)能够取得其它8个内置对象
b)具有转发和包含的功能 
c)域对象

       1.通过pageContext获得其他对象
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
 
2.引入和跳转到其他资源
    PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法
   传递给这些方法的资源路径,如果路径以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前JSP所映射到的访问路径。
   转发
     public abstract void forward(java.lang.String relativeUrlPath)
 
 
3.pageContext作为域对象
  pageContext域对象只限于当前jsp页面,出了该jsp页面,源pageContext域对象销毁,取不到,返回null
 
  1)  pageContext对象的方法 
    
public void  setAttribute(java.lang.String name,java.lang.Object value)      
public java.lang.Object  getAttribute(java.lang.String name)
public java.lang.Object  getAttribute(java.lang.String name, int scope)
public void  removeAttribute(java.lang.String name)
 
   2)  pageContext对象中还封装了访问其它域的方法
 
       pageContext/request/session/application
 
      public void setAttribute(java.lang.String name, java.lang.Object value,int scope)//可以指定存放到哪个域对象中去
      public java.lang.Object getAttribute(java.lang.String name,int scope)//指定将获取到的值放在某个指定的域对象中去
      public void removeAttribute(java.lang.String name,int scope)
 
   3) 代表各个域的常量
 
      PageContext.APPLICATION_SCOPE
      PageContext.SESSION_SCOPE
      PageContext.REQUEST_SCOPE
      PageContext.PAGE_SCOPE
 
  4) findAttribute方法   
      先后查找各个域中的属性
 
 
web开发接触到了4个域对象:
•pageContext(称之为page域)
•request(称之为request域)
•session(称之为session域)
•servletContext(称之为application域)
 

[四个域对象的生命周期]

1、pageContext jsp执行时创建pageContext,jsp页面结束时pageContext销毁
2、request 客户请求服务器时创建,请求结束request销毁
3、session 客户机请求服务器时,第一次getSession时,服务器创建session,session过xx多长时间没用了(或调用了 session.invalidate方法),服务器销毁session
4、application(servletContext) web应用启动时就创建,web应用停止就销毁

[什么情况下用什么域的问题]
1、什么情况下用request域?如果在开发程序时,数据看完就没用了,那就应该把数据存在request域范围内。比如看新闻,新闻属于用户看完就没用的数据,这时servlet获得新闻数据,就应该存在request里面交给jsp显示。

2、什么情况下用session域?如果在开发程序时,数据看完了用户等一会儿还要用,那就应该把数据存在session域范围内.例如购物,购买的商品是用户的数据,这个数据产生之后,用户等一会儿结帐还要用,那么程序就应该把数据存在用户的session中。

3、什么情况下用application域?如果在开发程序,数据产生了,这个数据不仅等一会儿自己要用,还要给别人用,那就应该存在application域,例如web聊天室,用户的聊天数据,这个数据不仅用户等一会儿自己要看,还要给别人看。




 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值