大家都晓得jsp之所以如此强大,其中的内置对象发挥了重要的作用,而每一种内置对象都有其有效的使用范围,也也就是jsp中的四种属性保存范围:page、request、session、appliction。
在jsp中可以通过下面的两个方法来设置和取得属性
在jsp中可以通过下面的两个方法来设置和取得属性
public abstract void setAttribute(String name,Object attribute)
pubic abstract Object getAttribute(String name)
page:在只一个页面范围内有效,不能发生跳转,也就是说,在跳转到另一个页面后,就不能取得它的属性了,必须通过pageContext来完成
<%
pageContext.setAttribute("name","ysh");
pageContext.setAttribute("password","123");
%>
<jsp:forward page="requestDemo03.jsp"/>
<% String name = (String)pageContext.getAttribute("name");
String password = (String)pageContext.getAttribute("password"); %>
<%=name%>
<%=password%>
request:服务器端范围内的一次请求,也就是说,在一个页面中设置属性,可以在当前页面中去取得属性,也可以在服务端发生跳转(jsp:forword),在下一个页面上也可以取得属性。
<%
request.setAttribute("name","ysh") ;
request.setAttribute("password","123") ; %>
<jsp:forward page="requestDemo02.jsp"/>
<% String name = (String)request.getAttribute("name") ;
String password = (String)request.getAttribute("password") ; %>
<%=name%>
<%=password%>
<jsp:forward page="requestDemo02.jsp"/>
session:只是在一次会话中,可以保留一个用户的信息,也就是说只要在一次会话中,不论是在服务器上跳转还
是在客户端跳转,都可以取得属性
<%
session.setAttribute("name","ysh") ;
session.setAttribute("password","123") ; %>
<jsp:forward page="sessionDemo02.jsp"/><%
String name = (String)session.getAttribute("name") ;
String password = (String)session.getAttribute("password") ; %>
<h1>name : <%=name%></h1>
<h1>password : <%=password%></h1>
<a href="sessionDemo03.jsp">sessionDemo03.jsp</a><%
String name = (String)session.getAttribute("name") ;
String password = (String)session.getAttribute("password") ; %>
<h1>name : <%=name%></h1>
<h1>password : <%=password%></h1>
application:在服务器上设置属性,所有的用户都可以获得此属性,此信息是被保留在服务器上,也就是说,只
要application被设置一次,所有的页面都可以来访问此属性,直到服务器重启。
一般地,如果能使用request就尽量不要使用session,能使用session就尽量不要使用application