JSP技术:四大作用域

为了在页面、请求、和用户之间传递和共享数据,JSP提供了四个不同的作用域:page(页面作用域)、request(请求作用域)、session(会话作用域)、application(应用程序作用域)。

这些作用域就规定了数据可以传递和共享的范围以及数据的存活周期

除了page外,其他作用域对象都可以通过setAttribute赋值和getAttribute取值

page

代表当前页面,保存了页面本身的一些信息,只在当前页面有效。页面中直接定义的所有变量都拥有一个page作用域。

page

 request

当前请求中有效,request可以通过setAttribute()方法实现页面中的信息传递。

 request

例:

test51.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> jsp 页面</h1>
<%!String name="王麻子"; %>
<% request.setAttribute("name",name);%>
<% request.getRequestDispatcher("test52.jsp").forward(request,response); %>
</body>
</html>

test52.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>另一个 jsp 页面</h1>
<%=request.getAttribute("name") %> 欢迎回来
</body>
</html>

执行结果

 

session

当前会话中有效,浏览器关闭则失效。当一个台电脑上的同一浏览器对服务器进行多次访问时,在这多次访问之间传递的信息就是session作用域的范围。

session

例:

test61.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> jsp 页面</h1>
<%!String name="王麻子"; %>
<% session.setAttribute("name",name);%>
</body>
</html>

test62.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>另一个 jsp 页面</h1>
<%=session.getAttribute("name") %> 欢迎回来
</body>
</html>

运行结果1   先访问test61.jsp ,在访问test62.jsp

test62运行截图

2   直接访问 test62.jsp

test62运行截图2

application

服务器开启期间都有效,也就是当服务器开始到服务器结束这段时间,数据不会丢失。

application

例子和上面一样,只要服务器不重启,数据永远都可以获取到!

阅读剩余
THE END