Cookie与Session
Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。
以后浏览器再给特定的web服务器发送请求时,同时会发送所有为该服务器存储的cookie。Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户会话所需的属性及配置信息。当用户在
应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去
区别:
1.session 在服务器端,cookie 在客户端(浏览器)
2.无论客户端做怎样的设置,session都能够正常工作。当客户端禁用cookie时将无法使用cookie
3.在存储的数据量方面:session能够存储任意的java对象,cookie只能存储String类型的对象。
下面利用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>demo</title>
</head>
<body>
<form action="demo1.jsp"method="post">
学号:
<input type="text"name="id"/>
<p>
一.单项选择题(每题两分)<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 getAttribute(String key)<br>
</p>
<p>
二.判断题(每题两分)<br>
1.同一客户在多个web服务目录中,所对应得session对象互不相同<br>
<input type="radio"name="2"value="true"/>true
<input type="radio"name="2"value="False">False
</p><br>
<input type="submit"value="提交"name=submit>
<input type="reset"value="重置"name=reset>
</form>
</body>
</html>
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>demo1</title>
</head>
<body>
<form action="demo2.jsp"method="post">
<%
String id=request.getParameter("id");
session.setAttribute("id",id);
String slect=request.getParameter("one");
session.setAttribute("one",slect);
String judge=request.getParameter("2");
session.setAttribute("2", judge);
%>
您的考号:<%=id %><br>
一.选择题<br>
1.<%=slect %><br>
二.判断题<br>
1.<%=judge %><br>
<input type="submit"value="确认"/>
<a href="demo.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>demo2</title>
</head>
<body>
<%
String id=(String)session.getAttribute("id");
int sum=0;
String slect=(String)session.getAttribute("one");
if("D".equals(slect)){
sum+=2;
}
String judge=(String)session.getAttribute("2");
if("true".equals(judge)){
sum+=2;
}
%>
您的成绩如下:<br>
<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>
运行如下: