對request.getSession().setAttribute和request.getSession().getAttribute()的理解
對內建的物件request就不多講,就直接進入主題。void getSession()方法相當於得到一個session物件,而void setAttribute()和String Attribute分別是對屬性賦值和得到屬性值的方法。
request.getSession().setAttribute和request.getSession().getAttribute()就是分別對session物件賦值和得到物件屬性的值。那麼問題來了。這樣的屬性值是否具有了session的特性呢。做一個小測驗:
第一個jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String str="huxiwen";
request.getSession().setAttribute("name", str); //對name物件賦值
out.print(request.getSession().getAttribute("name"));
%>
<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body>
<a href="RT.jsp">Test</a>
<!-- 連結到另外一個jsp中,測驗request.getSession().getAttribute("name")的是否會改變 -->
</body>
</html>
RT.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
out.println(request.getSession().getAttribute("name") );
%>
執行第一個jsp得到下圖,接著點選Test:
屬性值沒有改變,說明這樣得到的屬性值同樣具有session物件