zoukankan      html  css  js  c++  java
  • pageContext对象

    pageContext对象的类型是PageContext,叫jsp的上下文对象

     1)可以获取其他八个内置对象

            public class hello_jsp {
                   public void _jspService(request,response){
                           创建内置对象
                            HttpSession session =....;
                            ServletConfig config = ....;
                  把8个经常使用的内置对象封装到PageContext对象中
                            PageContext pageContext  = 封装;
                            调用method1方法
                            method1(pageContext);
                    }
                   public void method1(PageContext pageContext){
                          //希望使用内置对象
                           //从PageContext对象中获取其他8个内置对象
                           JspWriter out =pageContext.getOut();
                           HttpServletRequest rquest =  pageContext.getRequest();
                             ........
                          }
                }

    使用场景: 在自定义标签的时候,PageContext对象频繁使用到!!!

    2)本身是一个域对象

                                                   ServletContext context域

                                                   HttpServletRequet  request域

                                                   HttpSession    session域  

                                                   PageContext   page域             

       作用: 保存数据和获取数据,用于共享数据


    保存数据

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


    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" 
    isErrorPage="true" 
    session="true"
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head> 
        <title>pageContext对象</title>  
      </head>
      
      <body>
        <%
            //1)可以获取其他8个内置对象
            //response.getWriter().write("是否相等?"+(out==pageContext.getOut()) +"<br/>");
            //response.getWriter().write("是否相等?"+(session==pageContext.getSession()));
         %>
         
         
         <%--
             2)pageContext作为域对象使用
                     2.1 可以往不同域对象中存取数据
          --%>
          <%
              //保存数据。默认情况下,保存在page域中
              pageContext.setAttribute("message","page's message");
              pageContext.setAttribute("message","request's messsage",PageContext.REQUEST_SCOPE);//保存到request域中
              pageContext.setAttribute("message","session's messsage",PageContext.SESSION_SCOPE);//保存到sessio域中
              pageContext.setAttribute("message","application's messsage",PageContext.APPLICATION_SCOPE);//保存到context域中
              //request.setAttribute("message","request's message"); 等价于上面的代码
     
           %>
           
           <%
               //获取数据
               //String message = (String)pageContext.getAttribute("message");
               //out.write(message);
           
            %>
            <%--从request域中取出数据 --%>
            <%--
                   原则: 
                   1)在哪个域中保存数据,就必须从哪个域取出数据!!!
             --%>
            <%=pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>
            <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>
            <%=pageContext.getAttribute("message",PageContext.SESSION_SCOPE) %><br/>
            <%=pageContext.getAttribute("message",PageContext.APPLICATION_SCOPE) %><br/>
            <hr/>
            <%--
                findAttribute(): 在四个域自动搜索数据
                    顺序: page域 -> request域  -> session域 -> context域
                    
             --%>
             <%=pageContext.findAttribute("message") %>
             <% //request.getAttribute("message") %><br/>
          
          
          <%
              //转发
              // request.getRequestDispatcher("/03.pageContext2.jsp").forward(request,response);
              //重定向
              response.sendRedirect(request.getContextPath()+"/pageContext2.jsp");
           %>
      </body>
    </html>
    pageContext2.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head> 
        <title>从四个域中获取数据</title>  
      </head>
      
      <body>
        page域:<%=pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>
        request域: <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>
        session域: <%=pageContext.getAttribute("message",PageContext.SESSION_SCOPE) %><br/>
        context域:<%=pageContext.getAttribute("message",PageContext.APPLICATION_SCOPE) %><br/>
      </body>
    </html>

    运行显示:

    page域:null
    request域: null
    session域: session's messsage
    context域:application's messsage
  • 相关阅读:
    Ping
    boost::python开发环境搭建
    mingw和libcurl
    ssh远程执行命令使用明文密码
    netty源码阅读之UnpooledByteBufAllocator
    Direct ByteBuffer学习
    clions的使用
    netty中的PlatformDependent
    STL之priority_queue(优先队列)
    c++线程调用python
  • 原文地址:https://www.cnblogs.com/loaderman/p/10000880.html
Copyright © 2011-2022 走看看