session对象
web服务器会给每一个用户自动创建一个session对象,为每一个session对象分配一个唯一表识的String类型的ID,这个ID用来区分其他用户。这样每个用户都对应一个session对象,不同用户的session对象互相不同。
当在不同文件夹里放不同的jsp文件并分别运行时:
一个用户在同一个web服务目录中只有一个session对象,当用户访问相同的web服务目录的其他页面时,web服务器不会在重新分配session对象,直到用户关闭浏览器或这个session对象达到了它的生存期限。当用户重新打开浏览器再次访问该web目录时,web服务器为该用户在创建一个新的session对象。
需要注意的是:同一个用户在多个不同的web服务目录中对应的session对象时不同的,一个服务目录对应一个session对象
session对象的应用:
譬如:模拟在线考试系统
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session1</title>
</head>
<body>
<form action="sessionTest2.jsp" method="post">
考号:
<input type="text" name="id"/>
<p>
一、单项选择题(每题2分)
<br/><br/>
1.下列哪个方法是获取session中关键字是key的对象( )。
<br />
<input type="radio" name="one" value="A"/>
A.public void setAttribute(String key, Object obj)<br/>
<input type="radio" name="one" value="B"/>
B.public void removeAttribute(String key)<br/>
<input type="radio" name="one" value="C"/>
C.public Enumeration getAttributeNames()<br/>
<input type="radio" name="one" value="D"/>
D.public Object getAttibute(String key)<br/>
</p>
<p>
二、判断题(每题2分)
<br/><br/>
1.同一客户在多个Web服务目录中,所对应的session对象是互不相同的。
<br/>
<input type="radio" name="two" value="True"/>
True
<input type="radio" name="two" value="False"/>
False
</p><br/>
<input type="submit" value="提交" name=submit>
<input type="reset" value="重置" name=reset>
</form>
</body>
</html>
***
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session2</title>
</head>
<body>
<form action="sessionTest3.jsp" method="post">
<%
//考号
String id = request.getParameter("id");
//把考号id以“id”为关键字存储到session对象中
session.setAttribute("id", id);
//单项选择第一题
String first = request.getParameter("one");
//把答案first以“one”为关键字存储到session对象中
session.setAttribute("one", first);
//判断第一题
String second = request.getParameter("two");
//把答案second以“two”为关键字存储到session对象中
session.setAttribute("two", second);
%>
您的考号:<%=id%><br/>
一、单项选择题(每题2分)
<br/>
1.<%=first%>
<br />
二、判断题(每题2分)
<br />
1.<%=second%><br/>
<input type="submit" value="确认完毕"/>
<a href="sessionTest1.jsp">重新答题</a>
</form>
</body>
</html>
**
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session3</title>
</head>
<body>
<%
//获取考号
//获取session中关键字是id的对象(考号)
String id = (String) session.getAttribute("id");
//计算成绩
int sum = 0;
//如果单项选择第一题选中D选项,得2分。
//获取session中关键字是one的对象(选择答案)
String first = (String) session.getAttribute("one");
if ("D".equals(first)) {
sum += 2;
}
//如果判断第一题选中True,得2分。
//获取session中关键字是two的对象(判断答案)
String second = (String) session.getAttribute("two");
if ("True".equals(second)) {
sum += 2;
}
%>
您的成绩公布如下:
<table border="1">
<tr>
<th width="50%">
考号
</th>
<th width="50%">
成绩
</th>
</tr>
<tr>
<td><%=id%></td>
<td align="right"><%=sum%></td>
</tr>
</table>
</body>
</html>