<%session.setAttribute("name", "这是session测试"); %> <a href="https://www.jb51.net/two.jsp" >跳转</a> <%session.setAttribute("name", "这是session测试"); %> <jsp:forward page="https://www.jb51.net/two.jsp"></jsp:forward>
在two.jsp接收页面的代码是:
<%=session.getAttribute("name") %>
我们可以发现,无论客户端还是服务端跳转,设置的数据都可以在其他页面接收。
4,application范围
具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对 象的getAttribute()方法来访问具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。这个也就是说,只要设置了属性,即使重新启动浏览器,都还可以获取属性值,除非重启服务器。这一范围不做举例。
对上述四中属性范围,实际开发中遇到最多的是request和session。一般来说,只对于同一个功能的属性的传递,使用request范围属性。那么对于session范围来说,主要还是用于登陆上面。
上面四种属性范围,实际上四种属性范围都是通过pageContext设置的。在pageContext中,setAttribute()方式实际上被重载过:
1,public abstract void setAttribute(java.lang.String name, java.lang.Object value), 2,public abstract void setAttribute(java.lang.String name,java.lang.Object value,int scope)
第二种方法相比第一个方法多了一个参数(int scope),实际上这个参数就是指定属性范围的参数。
1,APPLICATION_SCOPE,2,PAGE_SCOPE,3,SESSION_SCOPE,4,REQUEST_SCOPE
也就是说,通过这个方法,我们可以设置四种属性范围,这也就是说,我们可以使用pageContext来完成上面四种属性的范围设定。
例如,我们用session时可以这样写:
<%@page contentType="text/html; charset=utf-8"%> <% pageContext.setAttribute("name","熊九天",PageContext.SESSION_SCOPE); %> <a href="https://www.jb51.net/two.jsp" >跳转</a>