实验目的及要求:
- 理解session的有效期。
- 理解并掌握sessionID和URL重写。
- 掌握session内置对象的getAttribute()等方法的使用。
- 掌握session对象存取数据的方法。
实验内容:
编写四个JSP 页面inputGuess.jsp、result.jsp、small.jsp、large.jsp和success.jsp,实现猜数字游戏。具体要求如下
1.inputGuess.jsp
用户请求inputGuess.jsp时,用随机函数产生一个1到100之间的数。该页面同时负责将这个数字存在用户的session对象中。该页面提供表单,用户可以使用该表单输入自己的猜测,并提交给result.jsp页面。
2.result.jsp
result.jsp页面负责判断inputGuess.jsp提交的猜测是否和用户的session对象中存放的那个数字相同,如果相同就将用户重定向到success.jsp;如果不相同就将用户重定向到large.jsp或small.jsp。
3.small.jsp和large.jsp
small.jsp和large.jsp页面提供表单,用户可以使用该表单继续输入自己的猜测,并提交给result.jsp页面。
4.success.jsp
success.jsp页面负责显示用户成功的消息,并负责输出用户session对象中的数据。
实验关键代码:(10号字,宋体,单倍行距)
inputGuess.jsp:
<body>
<%session.setAttribute("game","猜字游戏"); %>
<br>
随机分配了一个1到100之间的数,请猜!
<%
int number=(int)(Math.random()*100)+1;
session.setAttribute("count", new Integer(0));
session.setAttribute("save", new Integer(number));
%><br>
请输入你猜的数字:
<form action="result.jsp" method="post" name=form>
<input type="text" name="boy">
<input type="submit" value="提交" name="submit">
</form>
</body>
result.jsp:
<body>
<%
String str=request.getParameter("boy");
if(str==null){
str="0";
}
int guessNumber=Integer.parseInt(str);
Integer integer=(Integer)session.getAttribute("save");
int realnumber=integer.intValue();
if(guessNumber==realnumber)
{
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count", new Integer(n));
response.sendRedirect("success.jsp");
}
else if(guessNumber>realnumber){
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count", new Integer(n));
response.sendRedirect("large.jsp");
}
else if(guessNumber<realnumber)
{
int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count", new Integer(n));
response.sendRedirect("small.jsp");
}
%>
</body>
small.jsp:
<body>
所猜的数比实际的小,请继续:
<form action="result.jsp" method="post" name=form>
<input type="text" name="boy">
<input type="submit" value="提交" name="submit">
</form>
<%
Integer integer=(Integer)session.getAttribute("save");
int realnumber=integer.intValue();
out.println(realnumber);
%>
</body>
large.jsp:
<body>
所猜的数比实际的大,请继续:
<form action="result.jsp" method="get" name=form>
<input type="text" name="boy">
<input type="submit" value="提交" name="submit">
</form>
<%
Integer integer=(Integer)session.getAttribute("save");
int realnumber=integer.intValue();
out.println(realnumber);
%>
success.jsp:
<%
int count=((Integer)session.getAttribute("count")).intValue();
int num=((Integer)session.getAttribute("save")).intValue();
long startTime=session.getCreationTime();
long endTime=session.getLastAccessedTime();
%>
<%=session.getAttribute("game") %><br>
恭喜你,猜对了<br>
您共猜了<%=count%>次<br>
用时<%=(endTime-startTime)/600000 %>秒<br>
这个数字就是<%=num %>
</body>
实验结果: