JSP九大内置对象和四种属性范围解读

本文深入探讨了JSP中的四种属性范围——page、request、session和application,包括它们的概念、用法和示例。同时,文章还详细解析了JSP的九大内置对象,如request、response、session等,提供了丰富的应用场景和代码示例。
摘要由CSDN通过智能技术生成

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka  

     摘要:本文首先主要讲解了JSP中四种属性范围的概念、用法与实例。然后在这个基础之上又引入了九大内置对象,并对这几大内置对象一个一个的进行分析的解读。内容很详细,例子都附有代码和运行的结果截图。

本文工程下载

一、四种属性范围

1.1、在JSP中提供了四种属性保存范围

page:在一个页面内保存属性,跳转之后无效
request:在一次服务请求范围内,服务器跳转后依然有效
session:-在一次会话范围内,无论何种跳转都可以使用,但是新开浏览器无法使用
application:在整个服务器上保存,所有用户都可以使用

1.2、4种属性范围都支持的操作

public void setAttribute(String name,Object value)
public Object getAttribute(String name)
public Object removeAttribute(String name)

下面,我们来对四种范围来分别进行详细的介绍

1.3、page范围

在JSP中设置一个页的属性范围,必须通过pageContext完成,PageContext属性范围是最重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,此属性显示不出用处,其发挥作用在 Struts ,WebWork 中

如下:

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置page属性范围,此属性只在当前JSP页面内起作用
pageContext.setAttribute("name", "linbingwen");
pageContext.setAttribute("time", new Date());
%>
姓名:${pageScope.name}<br>
时间:${pageScope.time}<br>
</body>
</html>
${pageScope.name}这里用了EL表达式来取得值,输出结果如下,


这里要注意发果在其它页面使用:

如下:

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
姓名:${pageScope.name}<br>
时间:${pageScope.time}<br>
</body>
</html>
输出结果:


这说明page范围的值只能在本页使用!

1.4、request属性范围

request将属性保存在一次请求范围之内:

前提:必须使用服务器端跳转:<jsp:forward/> 应用点:MVC设计模式、Struts、 Webwork

应用实例

首先是设置request:

request.jsp

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置request属性范围
request.setAttribute("name", "linbingwen");
request.setAttribute("time", new Date());
%>
 <jsp:forward page="requestResult.jsp"/> 
</body>
</html>

然后是显示requestResult.jsp

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
获取request姓名:${requestScope.name}<br>
获取request时间:${requestScope.time}<br>
</body>
</html>

访问结果:


这时比如requestResult1.jsp也想来访问这两个属性

内容和requestResult.jsp一样:

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
获取request姓名:${requestScope.name}<br>
获取request时间:${requestScope.time}<br>
</body>
</html>

结果如下,说明request只针对服务器跳转有效,在两次跳转之间保存。



1.5、session属性范围

session:只要设置上去,则不管是什么跳转,都可以取得属性,主要用于验证用户是否登陆。EMAIL--->用户需要先进行登陆,登陆成功后再编辑邮件。与session有关的任何打开的页面都可以取得session

比如session.jsp设置如下:

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置session属性范围
session.setAttribute("name", "linbingwen");
session.setAttribute("time", new Date());
%>
<a href="sessionResult.jsp">获取session内容</a>
</body>
</html>
然后是取出sesson的值sessionResult.jsp

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
获取session姓名:${sessionScope.name}<br>
获取session时间:${sessionScope.time}<br>
</body>
</html>
输出结果:


如果还有一个sessionResult1.jsp和sessionResult.jsp一样如下

<%@page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head&g
  • 20
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值