您现在的位置: PQ秀秀网 >> 网络编程 >> jsp编程 >> 正文 用户登录 新用户注册
深入jsp:useBean
作者:佚名    教程来源:不详    点击数:加载中...    更新时间:2008-4-17 字体:[ ]
添加到收藏: 添加到百度收藏  收藏到QQ书签  添加到雅虎收藏  添加到新浪ViVi  添加到天极网摘  添加到和讯网摘
avaBean在JSP中的应用给我们带来了很大的方便,使得我们能够把功能较单纯的代码提取出来,增加了代码重用率。$#@60;jsp:useBean /$#@62;这个命令大家在每个JSP文件的开头一般都会用吧?下文将要介绍的是useBean命令的一些特殊用法,包括怎样为多个页面共享的bean进行初始化,以及怎样简便的把request的数据传递到bean中去。
  大家都知道bean有一个scope属性,指明bean的类型的实例建立的位置。默认的page就表示放在PageContext对象中,可以在本页面内部使用;request表示放在ServletRequest对象中,在当前request的处理期间都能够访问,这个其实和page差不多;session表示放在HttpSession对象中,只要当前页面的page.session设置为true就能够访问;application表示放在ServletContext对象中,当前服务器上面属于一个application的servlet都能访问。使用不同的scope属性值就能在不同的范围内共享bean内部的数据,但是当想为bean作一些初始化工作的时候,如果不能确定哪一个页面先运行怎么办?
  解决的方法是有的。除了常见的$#@60;jsp:useBean ... /$#@62;这种创建bean的格式以外,还有下面这种方式:
  $#@60;jsp:useBean ...$#@62;代码$#@60;/jsp:useBean$#@62;中间的代码就可以用来进行初始化工作,因为这些代码只在一个bean创建的时候执行。新创建一个bean的条件是,在一个application的范围内,没有id和scope都相同的bean存在。所以,如果你有许多页面上使用同一个bean,又想在初始化的时候设置一些bean的property,你可以把初始化代码放在每一个申明中,然后系统运行的时候只有第一个被执行的页面能够执行到这些初始化代码。
  举个例子,你有一个网站有许多的入口页面,现在你想跟踪一个用户在你的网站上逗留的时间,你可以用一个scope为session的bean来记录用户首次访问的时间,在他离开的时候把总时间存到用户数据库里面。这里只看看怎样记录首次访问时间。
  我们的bean中的关键部分是这个样子:
  /** a bean to record user browsing time
  * log-in time set by the first page visited
  */
  package myapp;
  public class TimeRecordBean {
  private long loginTime;
  private long logoutTime;
  ...
  public void setLoginTime(long time) {
  this.loginTime = time;
  }
  ...}//end of bean class然后,在所有可能的入口页面 娑脊灿谜庑┐耄?br>  $#@60;html$#@62;$#@60;body$#@62;$#@60;%@ page import=“java.util.*”%$#@62;$#@60;%@ page session=”true”%$#@62;$#@60;% ...long visitTime = Date.getTime();...
  %$#@62;$#@60;jsp:useBean id=”timerec”class=”myapp.TimeRecordBean”
  scope=”session”$#@62;$#@60;jsp:setProperty name=”timerec”
  property=”longinTime”
  value=”$#@60;%= visitTime%$#@62;”/$#@62;$#@60;/jsp:useBean$#@62;...$#@60;/body$#@62;$#@60;/html$#@62;现在,不论用户从哪一个页面进入你的网站,你都会得到进入的时间。再加上对用户id的记录和用户退出时的检测就能实现你的统计了。
教程录入:andy    责任编辑:andy 
  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)