📄 42.html
字号:
<br>
大多数时候我们都是根据特定的名字寻找与它关联的值,但也可以调用getValueNames得到所有属性的名字。getValuesNames返回的是一个String数组。API 2.2版推荐使用getAttributeNames,这不仅是因为其名字更好,而且因为它返回的是一个Enumeration,和其他方法(比如HttpServletRequest的getHeaders和getParameterNames)更加一致。 <br>
<br>
虽然开发者最为关心的往往是保存到会话对象的数据,但还有其他一些信息有时也很有用。 <br>
<br>
getID:该方法返回会话的唯一标识。有时该标识被作为键-值对中的键使用,比如会话中只保存一个值时,或保存上一次会话信息时。 <br>
isNew:如果客户(浏览器)还没有绑定到会话则返回true,通常意味着该会话刚刚创建,而不是引用自客户端的请求。对于早就存在的会话,返回值为false。 <br>
getCreationTime:该方法返回建立会话的以毫秒计的时间,从1970.01.01(GMT)算起。要得到用于打印输出的时间值,可以把该值传递给Date构造函数,或者GregorianCalendar的setTimeInMillis方法。 <br>
getLastAccessedTime:该方法返回客户最后一次发送请求的以毫秒计的时间,从1970.01.01(GMT)算起。 <br>
getMaxInactiveInterval:返回以秒计的最大时间间隔,如果客户请求之间的间隔不超过该值,Servlet引擎将保持会话有效。负数表示会话永远不会超时。 <br>
10.2.3 在会话对象中保存数据 <br>
<br>
如上节所述,读取保存在会话中的信息使用的是getValue方法(或,对于2.2版的Servlet规范,使用getAttribute)。保存数据使用putValue(或setAttribute)方法,并指定键和相应的值。注意putValue将替换任何已有的值。有时候这正是我们所需要的(如下例中的referringPage),但有时我们却需要提取原来的值并扩充它(如下例previousItems)。示例代码如下: <br>
HttpSession session = request.getSession(true);<br>
session.putValue("referringPage", request.getHeader("Referer"));<br>
ShoppingCart previousItems = <br>
(ShoppingCart)session.getValue("previousItems");<br>
if (previousItems == null) {<br>
previousItems = new ShoppingCart(...);<br>
}<br>
String itemID = request.getParameter("itemID");<br>
previousItems.addEntry(Catalog.getEntry(itemID));<br>
<br>
session.putValue("previousItems", previousItems);<br>
<br>
<br>
<br>
10.3 实例:显示会话信息 <br>
<br>
下面这个例子生成一个Web页面,并在该页面中显示有关当前会话的信息。 <br>
package hall;<br>
<br>
import java.io.*;<br>
import javax.servlet.*;<br>
import javax.servlet.http.*;<br>
import java.net.*;<br>
import java.util.*;<br>
<br>
public class ShowSession extends HttpServlet {<br>
public void doGet(HttpServletRequest request,<br>
HttpServletResponse response)<br>
throws ServletException, IOException {<br>
HttpSession session = request.getSession(true);<br>
response.setContentType("text/html");<br>
PrintWriter out = response.getWriter();<br>
String title = "Searching the Web";<br>
String heading;<br>
Integer accessCount = new Integer(0);;<br>
if (session.isNew()) {<br>
heading = "Welcome, Newcomer";<br>
} else {<br>
heading = "Welcome Back";<br>
Integer oldAccessCount =<br>
// 在Servlet API 2.2中使用getAttribute而不是getValue<br>
(Integer)session.getValue("accessCount"); <br>
if (oldAccessCount != null) {<br>
accessCount =<br>
new Integer(oldAccessCount.intValue() + 1);<br>
}<br>
}<br>
// 在Servlet API 2.2中使用putAttribute<br>
session.putValue("accessCount", accessCount); <br>
<br>
out.println(ServletUtilities.headWithTitle(title) +<br>
"<BODY BGCOLOR=\"#FDF5E6\">\n" +<br>
"<H1 ALIGN=\"CENTER\">" + heading + "</H1>\n" +<br>
"<H2>Information on Your Session:</H2>\n" +<br>
"<TABLE BORDER=1 ALIGN=CENTER>\n" +<br>
"<TR BGCOLOR=\"#FFAD00\">\n" +<br>
" <TH>Info Type<TH>Value\n" +<br>
"<TR>\n" +<br>
" <TD>ID\n" +<br>
" <TD>" + session.getId() + "\n" +<br>
"<TR>\n" +<br>
" <TD>Creation Time\n" +<br>
" <TD>" + new Date(session.getCreationTime()) + "\n" +<br>
"<TR>\n" +<br>
" <TD>Time of Last Access\n" +<br>
" <TD>" + new Date(session.getLastAccessedTime()) + "\n" +<br>
"<TR>\n" +<br>
" <TD>Number of Previous Accesses\n" +<br>
" <TD>" + accessCount + "\n" +<br>
"</TABLE>\n" +<br>
"</BODY></HTML>");<br>
}<br>
public void doPost(HttpServletRequest request,<br>
HttpServletResponse response)<br>
throws ServletException, IOException {<br>
doGet(request, response);<br>
}<br>
} <br>
<br>
</td>
</tr>
<tr><td colspan=2 align=right class=t> <a href="http://www.chinajavaworld.com/doc/servlet-jsp/32.html" ></a> <a href="41.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/41.html" ></a> <a href="43.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/43.html" ></a> </td></tr>
</td>
</tr>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -