jsp的四大作用域,九大隐式对象


作用域范围从小到大顺序:

pageContext----request----session----application

 

其中:

pageContext:

作用域仅限于当前页面对象,可以近似于理解为java的this对象,离开当前JSP页面(无论是redirect还是forward),则pageContext中的所有属性值就会丢失。

注意:pageContext      页面上下文对象              在调用_jspService的时候创建

                   作用范围:处于当前页面中有效!


request:

作用域是同一个请求之内,在页面跳转时,如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值。如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,此种场景下,request中的属性值会丢失。

session:

session的作用域是在一个会话的生命周期内,会话失效,则session中的数据也随之丢失。

application:

作用域是最大的,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享。


jsp九大隐式对象

2.7 JSP的九大隐式对象(内置对象)

request  HttpServetRequest  请求信息对象                     用户发出请求的时候

response HttpServletResponse 响应信息对象                    服务器响应用户的时候

session     HttpSession                      会话对象                            调用request.getSession的时候

application ServletContext            当前web应用信息对象 web应用启动的时候

exception  Thowable                      异常信息对象                   异常抛出的时候

page                 this                              当前页面对象                   访问这个当前页面的时候

config   ServletConfig                    servlet的配置信息对象         构造servlet对象之后,创建ServetConfig对象,通过init                                                                                                                        方法传入servlet

out      JspWriter                           输出对象                            调用_jspService的时候创建

pageContext   PageContext                   页面上下文对象              调用_jspService的时候创建

 

 

out对象

之前servlet里面有一个PrintWriter对象,PrintWriter对象是用于向浏览器输出内容。out对象类型是JspWriter,JspWriter的作用类似于PrintWriter,但是JspWriter有缓存功能,而PrintWriter没有!

 

当遇到这三种情况,JspWriter缓存区的内容会往浏览器写出!

         1)out的缓存区满了。

         2)调用out.flush()方法

         3)页面读取完毕!

 

注意:JspWriter的写出效率会比PrintWriter高

 

pageContext

                   页面上下文对象

                   使用场景:自定义标签使用频繁!!

                   作用:

                            1、可以通过pageContext获取其他八个隐式对象

                            2、通过pageContext保存和获取数据

                                     2.1 在指定域中保存和获取

                                     2.2 在四个域中从小到大自动匹配数据

                  

<%

      //2 可以向pageContext

      //默认方式

      //保存数据

      pageContext.setAttribute("itcast""www.itcast.cn");

  

      //往指定域保存数据.默认保存的域是PAGE_SCOPE

      //pageContext.setAttribute("message", "pageContext's value", PageContext.PAGE_SCOPE);

      //pageContext.setAttribute("message", "request's value", PageContext.REQUEST_SCOPE);

      //pageContext.setAttribute("message", "session's value", PageContext.SESSION_SCOPE);

      pageContext.setAttribute("message""application's value", PageContext.APPLICATION_SCOPE);

     

      /**

         以上方式等价于:

         pageContext.setAttribute();

         request.setAttribute();

         session.setAttribute();

         context.setAttribute();

      */

  

   %>

  

   <%--

      获取数据

    --%>

   <%=pageContext.getAttribute("itcast"%><br/>

   <%--

      从指定域中获取数据

      注意:在哪个域把数据保存进去,就得从这个域中取出

    --%>

   <%=pageContext.getAttribute("message",PageContext.SESSION_SCOPE) %><br/>

   <%---

      自动在四个域中匹配数据,从小到大依次匹配,如果匹配到了,就返回对应域中的数据;如果没有,则返会空

      从小到大:

         pageContext < request < session < application

    --%>

   <%=pageContext.findAttribute("message"%>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值