林炳文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