jsp 四大属性范围

四种属性:pageContext、request、session、application


四种属性都有的三种方法:

public  void  setAttribute(String name,Object o ),设置属性的名称及内容

public Object  getAttribute(String name) 根据属性名称取得属性

public void removeAttribute(String name),删除指定的属性



1、pageContext

pageContext简称page,该属性只在本页有效,跳转后无法取得。下面用代码来看一下

页面page_01代码

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%	// 设置属性
	pageContext.setAttribute("name","页面") ;
	pageContext.setAttribute("birthday",new Date()) ;
%>
<%
	String username = (String) pageContext.getAttribute("name") ;
	Date userbirthday = (Date)pageContext.getAttribute("birthday") ;
%>
<h2>姓名:<%=username%></h2>
<h2>生日:<%=userbirthday%></h2>
</body>
</html>

运行页面输出     姓名:页面

      时间:系统时间

页面page_02代码

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%	// 设置属性
	pageContext.setAttribute("name","页面") ;
	pageContext.setAttribute("birthday",new Date()) ;
%>
<jsp:forward page="page_03.jsp"/>
</body>
</html>

该页面中有forward跳转到page_03

输出为   姓名:null

                时间:null

说明:服务器发生跳转之后,内容无法取得了。因为一个page范围中的内容只能保存在一个页面

页面page_03代码

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%
	String username = (String) pageContext.getAttribute("name") ;
	Date userbirthday = (Date)pageContext.getAttribute("birthday") ;
%>
<h2>姓名:<%=username%></h2>
<h2>生日:<%=userbirthday%></h2>
</body>
</html>

2、request 对象

request属性范围表示在服务器跳转之后,所有的设置内容依然被保留下来。

页面request_01

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%	// 设置属性
	request.setAttribute("name","页面") ;
	request.setAttribute("birthday",new Date()) ;
%>
<jsp:forward page="request_02.jsp"/>
</body>
</html>
页面request_02

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%
	String username = (String) request.getAttribute("name") ;
	Date userbirthday = (Date)request.getAttribute("birthday") ;
%>
<h2>姓名:<%=username%></h2>
<h2>生日:<%=userbirthday%></h2>
</body>
</html>

现在修改语句
<jsp:forward page="request_02.jsp"/>
修改为通过超链接取得属性

<a href="request_02.jsp">通过链接取得属性</a>


页面request_03
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>page</title></head>
<body>
<%	// 设置属性
	request.setAttribute("name","页面") ;
	request.setAttribute("birthday",new Date()) ;
%>
<a href="request_02.jsp">通过链接取得属性</a>
</body>
</html>
执行request_03跳转到request_02

输出为  姓名:null

      生日:null


设置了超链接之后,首先地址栏会发生改变,所以一旦地址栏发生改变的跳转,成为客户端跳转,客户端跳转无法彻底request属性。地址栏改变了,就相当于发生了第二次请求,则第一次请求的内容肯定就消失了,所以无法取得。一次跳转称为服务器跳转。


3、session对象

无论是服务器还是客户端跳转,都可以保存属性。但是再打开一个新的浏览器的话,就无法取得session了,因为每一个session只保存了当前的浏览器之中,并且可以从相关的页面中取得。

4、application对象

若想让属性设置一次后,不管是否是新的浏览器,打开都可以访问的话,则就可以使用application范围了。

所有的application属性直接保存在服务器上了,每一个session都可以直接访问了。若关闭了服务器重新启动了,则无法取得了。


四大属性使用原则,优先使用page,其次request,再次是session,最后是application。

因为保存的范围越窄,服务器压力越低。









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值