当前位置:K88软件开发文章中心编程全书编程全书02 → 文章内容

使用session对象储存数据

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-4 8:17:53

-->

session对象储存数据

(1)session对象驻留在服务器端,session对象通过调用setAttribute()方法保存用户在访问某个web服务目录有关数据。

public void setAttribute(String key,Object obj)

(2)调用getAttribute()方法获取session对象的值,参数为key(键)

public Object getAttribute()

(3)session对象调用getAttributeName()返回的是一个枚举对象,该枚举对象使用nextElements()遍历session中个个对象所对应的关键字。

public Enumeration getAttributeName()

(4)session对象调用getCreationTime()可以获取对象创建的时间。单位是毫秒。

public long getCreationTime()

(5)seesion对象调用removeAttribute(String key)方法从当前seesion对象中删除关键字为key的对象。

public void removeAttribute(String key)

程序示例 – 在Tag文件中使用session对象

jsp页面通过Tag文件来实现代码复用,那么在调用Tag文件时,Tag文件就可以对session对象中存储的数据进行处理,并将结果返回为JSP页面。

  • example4_18.jsp
  • guess.jsp
  • GuessTag.jsp

example4_18.jsp:使用session对象初始化猜的“次数”和“要猜的数”。

guess.jsp: 输入数给tag,tag接受数据后做出判断,将结果又返回给guess.jsp,由guess.jsp输出结果。

GuessTag.jsp: 数据处理。

example4_18.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<title>Insert title here</title>
</head>
<body bgcolor="black">
<font color="white" >
随机分给你1到100的数,请猜!
<%
int num=(int)(Math.random()*100)+1;
session.setAttribute("count",new Integer(0));
session.setAttribute("sava",new Integer(num)); //session通过setAttribute方法存储数据
%>
<BR>
<a href="guess.jsp">去猜这个数</a>
</font>
</body>
</html>

guess.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="guessNumber" %>
<title>Insert title here</title>
<head>
<body>
<body bgcolor="black">
<font color="white">
<%
String str=request.getParameter("guessNumber");
if(str==null)
str="*";
if(str.length()==0)
str="*";
%>

<guessNumber:GuessTag number="<%=str %>" />

当前猜测结果:<%=message %>
<%
if(message.startsWith("你猜对了")){
%> <br><a href="example4_18.jsp">重新获得随机数</a>
<% }
else{
%> <br>请输入你的猜测:
<form action="" method="post" name=form>
<input type="text" name="guessNumber">
<input type="submit" name="submit" value="送出">

</form>
<% }

%>
</font>
</body>
</html>

GuessTag.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ attribute name="number" required="true" %> <!-- tag文件接收jsp传回的数据 -->
<%@ variable name-given="message" scope="AT_END" %> <!--tag文件返回的对象 -->
<body bgcolor="black">
<font color="white" >
<%
String mess="";
Integer integer=(Integer)session.getAttribute("sava"); //取回session中的数据保存至integer中
Integer realnumber=integer.intValue(); //realnumber保存要猜的数
int guessNumber=0; //guessNumber保存用户输入的数
boolean boo=true;
try{

guessNumber = Integer.parseInt(number); //number为guess.jsp传回的数据

}
catch(Exception e){
boo=false;
}

if(boo){
if(guessNumber==realnumber){
int n=((Integer)session.getAttribute("count")).intValue(); //获取session中count的值(计算次数)
n=n+1;
session.setAttribute("count",new Integer(n)); //重新设置session的值
mess="你猜对了,这是第"+n+"次猜测";

}
else if(guessNumber>realnumber){
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
mess="你猜大了,这是第"+n+"次猜测";
}
else if(guessNumber <realnumber){
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
mess="你猜小了,这是第"+n+"次猜测";
}




jspContext.setAttribute("message",mess); //返回tag计算的数据给guess.jsp中
}

else if(number.equals("*")){
mess="输入为空!";
jspContext.setAttribute("message",mess);
}
else
{

jspContext.setAttribute("message","输入格式错误!");
}

%>
</font>
</body>

运行结果:


使用session对象储存数据