目的 让学生了解session对象及其常用方法,掌握如何通过session对象以属性的、取用户相关的信息。 任务 利用session完成一个猜数字的游戏: (1) 当客户端访问guessForm.jsp时,页面产生一个1~100的随机数,并将其存入session对象,然后让客户猜这个数字,页面如图1所示。 (2)客户输入数后提交给result.jsp,该页面将客户猜的数和产生的随机数进行比较,若猜对了,跳转到success.jsp(图4),显示客户猜数所用的时间等信息。若猜的数字大于随机数,连接到large.jsp(图2);否则连接到small.jsp(图3)。这两个页面都要求客户重新猜数。 图1 guessForm.jsp页面 图2 large.jsp文件的运行效果图 图3 small.jsp文件的运行效果图 图4 success.jsp文件的运行效果图 相关知识点 (1)Session对象 :是用来分别保存每一个用户信息的对象,以便于跟踪用户的操作状态。Session的信息保存在服务端,Session的ID保存在客户机的Cookie中。当用户登录站点时,系统就会为其建立一个Session对象,以便于区别其他用户。这个Session对象记录该用户的个人信息,而当该用户退出网站时,该Session对象就会随之消失。 (2)session对象的主要方法: getId() 此方法返回惟一的标识,这些标识为每个Session而产生。 setAttribute( String name , java.lang.Object value ) 设置指定名字name的属性值value,并将之存储在Session对象中。 getAttribute( String name ) 获取指定名字name相联系的信息。 removeAttribute( String name ) 删除与提定名字name的相联系的信息。 getAttributeNames() 返回Session对象中存储的每一个属性对象,其结果为一个枚举对象。 getCreationTime() 返回Session被创建的时间.最小单位为千分之一秒。 getLastAccessedTime() 返回当前Session对象最后被客户发送的时间,最单位为千分之一秒。 setMaxInactiveInterval() 设置会话超时时间间隔。 getMaxInactiveInterval() 返回总时间(秒),负值表示Session永远不会超时。该时间为该Session对象的生存时间。 invalidate() 注销会话,使会话失效。 (3)Java中随机数生成 Math库里的静态方法random(),该方法的作用是产生0到1之间(包括0,但不包括1)的一个double值。 double rand = Math.random(); 通过Random类的对象 Random rand = new Random(); int num=rand.nextInt(100)+1); (4)获取当前系统时间: java.util.Date now=new java.util.Date(); long time=now.getTime(); //返回的是以毫秒为单位的长整型值,表示的是距离1970年1月1日 00:00:00的毫秒数。 (5)会话的维持 如果浏览器禁用Cookie导致不能维持会话,可以采用重写URL的方式传递session ID,以维持会话: result.jsp 或 或