javaweb-jsp-PageContext对象分析及代码和截图案例

分析:

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

(2)pageContext作为域对象 

pageContext对象的方法 
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE 

(3)代码:yu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- pageContext的好处,直接存值 -->
 <%
 pageContext.setAttribute("name", "wangtd-page", pageContext.PAGE_SCOPE);
 pageContext.setAttribute("name", "wangtd-request", pageContext.REQUEST_SCOPE);
 pageContext.setAttribute("name", "wangtd-session", pageContext.SESSION_SCOPE);
 pageContext.setAttribute("name", "wangtd-application", pageContext.APPLICATION_SCOPE);
  %>
<%-- <%
pageContext.setAttribute("name", "wangtd-page");//page,当前页
 %> --%>
 <h1>获取pageContext域中的值</h1>
 <!-- 获取方式1  -->
 <%=pageContext.getAttribute("name") %><br/>
 <!-- 获取方式2EL表达式 -->
 ${name}<br/>
 <!-- page是当前页,scope作用范围 -->
 ${pageScope.name}
 
 <%-- <%
request.setAttribute("name", "wangtd-request");//page,当前页
 %> --%>
 <h1>获取request域中的值</h1>
 <!-- 获取方式1  -->
 <%=request.getAttribute("name") %><br/>
 <!-- 获取方式2EL表达式 -->
 ${name}<br/>
 <!-- page是当前页,scope作用范围 -->
 ${requestScope.name}
 <!-- 重定向 -->
  <%
 // response.sendRedirect("./houyu.jsp");
 //request.getRequestDispatcher("./houyu.jsp").forward(request, response);
   %>
 <%--   <%
session.setAttribute("name", "wangtd-session");//page,当前页
 %> --%>
  <h1>获取session域中的值</h1>
 <!-- 获取方式1  -->
 <%=session.getAttribute("name") %><br/>
 <!-- 获取方式2EL表达式 -->
 ${name}<br/>
 <!-- page是当前页,scope作用范围 -->
 ${sessionScope.name}<br/>
 <a href="./houyu.jsp">houyu.jsp</a>
   <%-- <%
application.setAttribute("name", "wangtd-application");//page,当前页
 %> --%>
  <h1>获取application域中的值</h1>
 <!-- 获取方式1  -->
 <%=application.getAttribute("name") %><br/>
 <!-- 获取方式2EL表达式 -->
 ${name}<br/>
 <!-- page是当前页,scope作用范围 -->
 ${applicationScope.name}<br/>
 
 
 
 
代码:houyu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<h1>显示其它页面中的pageContext的值</h1>
<%=pageContext.getAttribute("name") %>
<h1>显示其它页面中的request的值</h1>
<%=request.getAttribute("name") %>
<h1>显示其它页面中的session的值</h1>
<%=session.getAttribute("name") %>
<h1>显示其它页面中的application的值</h1>
<%=application.getAttribute("name") %>
(4)代码分析及截图

经编译的servlet源文件yu.java类

(1)分析:pageContext域,说的pageContext对象不是page对象,pageContext是当前页的上下文




下面这个页中的值(pageContex对象)


在这个页中取不到


说明pageContext这个域对象中存的值只能在当前页中有效

Page说的是pageContext对象,不是下面这个

(2)分析request域

这个页面


实现效果


分析:

在第二行得到是wangtd-page,因为写的是${name}首先从pageScope中获取,若没有再从request中获取

重定向:地址会发生变化,但是值不会传递过来response.sendRedirect("./houyu.jsp");

转发: 地址不会发生变化,但是值会传递过来request.getRequestDispatcher("./houyu.jsp").forward(request, response);

(3)session域分析

session实现效果



分析:能获取session中的值,不用转发

(4)分析:application域

实现效果


分析:application域是servlet中的servletContext对象

总结:从大到小的域范围

ServletContext代表的是整个web应用程序的上下文,

session会话只有自己这个会话才有作用

request是一次请求一次响应的过程

pageContext是当前页的过程

pageContext这个也可以直接存值:

<!-- pageContext的好处,直接存值 -->

 <%

 pageContext.setAttribute("name""wangtd-page", pageContext.PAGE_SCOPE);

 pageContext.setAttribute("name""wangtd-request", pageContext.REQUEST_SCOPE);

 pageContext.setAttribute("name""wangtd-session", pageContext.SESSION_SCOPE);

 pageContext.setAttribute("name""wangtd-application", pageContext.APPLICATION_SCOPE);

  %>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值