欢迎光临
我们一直在努力

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet

建站超值云服务器,限时71元/月

欢迎页面welcome.jsp

  当用户录入正确的密码后,switch.jsp控制jsp页面导向welcome.jsp欢迎页面,在这节里,我们来开发这个welcome.jsp页面。因为welcome.jsp需要使用到一个第三方的标签库,所以在开发welcome.jsp之前需要在jbuilder中作一些配置引入这个标签库。

  将第三方标签库配置到jbuilder中

  apache开源组织提供了许多有用标签库,欢迎页面welcome.jsp需要使用一个来源于apache的datetime标签库,可以用这个标签库在jsp中提供各种时间的显示,下载的地址是:http://apache.justdn.org/jakarta/taglibs/datetime/binaries/jakarta-taglibs-datetime-1.0.1.zip。

  标签库一般包括两个文件,其一是类包jar文件,其二是以.tld为扩展名的标签符描述文件。从下载的压缩文档中解压后,我们将taglibs-datetime.jar和taglibs-datetime.tld文件放到<工程目录>/datetimetag目录下。

  要在工程中使用第三方的标签库,必须事先在jbuilder中配置这个标签库,并在工程中引用它。配置标签库和配置类库相似,也是通过configure libraries对话框来完成。jbuilder类库及标签库都列在configure libraries对话框中左边的树中,类库显示为JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet 图标,而标签库显示为JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet 图标。下面我们来将datetime标签库配置到jbuilder中。

  1.tools->configure->libraries->configure libraries对话框。

  点击configure libraries对话框的左下角的add…按钮,弹出new library wizard对话框,如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 17新库向导对话框

  在name中给这个库取一个名字:datetimetag,按ok返回configure libraries对话框。

  2.指定标签库文件。

  在返回configure libraries对话框后,datetimetag节点出现在左边的树中,因为还没有为其指定类库文件,有别于其他节点显示为显目的红色,点选datetimetag并将library settings设置页切换到framework标签页中,如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 18 切换到framework中

  在framework下拉框中选择user-defined jsp tag library选项,点击标签页右下方的add…按钮,弹出define new tag library对话框,如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 19 指定标签库的描述文件

  在define new tag library对话框中,点击tld file后的…按钮,导航到<工程目录>/datetimetag/taglibs-datetime.tld文件中,确认后jbuilder自动填充其余的设置项,一般不需要更改jbuilder这些自动补充的设置。其中prefix为这个标签库指定了一个引用前缀。点击ok按钮返回configure libraries对话框,datetimetag节点显示为正常的颜色如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 20 正确配置标签库后的效果

  点击configure libraries对话框的ok按钮完成datetime标签库的配置。

  3.在当前工程中引用这个新配置的标签库。

  project->project properties…->paths->切换到required libraries标签页中->点击add…按钮从jbuilder类库中选择datetimetag。配置成功后,project properties对话框如下所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 21 工程引用库

  创建欢迎jsp页面

  1.file->new…->web->双击jsp图标,启动创建jsp向导,指定jsp文件名为welcome,点击next到下一步。

  2.在welcome.jsp页面中引用datetimetag标签库。

  在向导的第2步中允许你选择jbuilder中的各种标签库,我们在上一节中配置的datetimetag标签库也出现在tag libraries列表中,如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 22 引用标签库

  展开datetime tag并勾选taglibs-datetime,按next到一下步。

  3.引用在switch.jsp中放入session域的userbean对象。

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 23 引用switch.jsp中放入session的userbean

  点击add bean…选择bookstore.user类,在id栏中指定bean的名字为ses_userbean,scope栏中选择session作用域。ses_userbean即是在switch.jsp为userbean所指定的名字,web容器将根据这个名字到session中查找对象,如果找不到才创建bookstore.user对象,因为welcome.jsp在switch.jsp之后才被调用,所以除非session对期,否则都可以找到userbean对象。

  直接点击finish创建welcome.jsp文件,其代码如下所示:

  代码清单 15 welcome.jsp欢迎页面

1. <%@ page contenttype=”text/html; charset=gbk” %>
2. <%@ taglib uri=”http://jakarta.apache.org/taglibs/datetime-1.0″ prefix=”dt” %>
3. <html>
4. <head>
5. <title>
6. welcome
7. </title>
8. </head>
9. <jsp:usebean id=”ses_userbean” scope=”session” class=”bookstore.user” />
10. <jsp:setproperty name=”ses_userbean” property=”*” />
11. <body bgcolor=”#ffffff”>
12. <h1>
13. jbuilder generated jsp
14. </h1>
15. </body>
16. </html>

  在向导第2步所引用的标签库设置对应第2行的引用标签库声明代码。而在第3步中设定的bean对应第9~10行代码,因为在welcome.jsp中无需填充bean的值,所以应该手工去除第10行的代码。

  下面我们在welcome.jsp文件中引用datetime标签库,用它生成一个当前时间格式化串。打开welcone.jsp文件并切换到source视图页中。首先清除<body></body>中jbuilder所产生的代码,在<body></body>中输入”<dt:”,jbuilder将使用taginsight功能显示出这个标签库中所有可用的标签项,如下图所示:

    JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
            图 24 利用taginsight录入标签库

  使用taginsight可以非常方便地录入标签库中的可用标签,大大加速标签库的代码录入并保证正确性。在welcome.jsp中我们使用标签库获得一个当前的格式化时间串,此外我们还通过ses_userbean获取用户的名字。welcome.jsp的最终代码如下所示:

  代码清单 16 welcome.jsp 引用标签库和session对象

1. <%@page contenttype=”text/html; charset=gbk” errorpage=”error.jsp”%>
2. <%@taglib uri=”http://jakarta.apache.org/taglibs/datetime-1.0″ prefix=”dt”%>
3. <html>
4. <head>
5. <title>welcome</title>
6. </head>
7. <jsp:usebean id=”ses_userbean” scope=”session” class=”bookstore.user”/>
8. <body bgcolor=”#ffffff”>你是
9. <%=ses_userbean.getusername()%>,欢迎登录。<br>
10. 现在的时间是<dt:表单at pattern=”mm/dd/yyyy hh:mm”><dt:currenttime/></dt:表单at>
11. <br>点击<a href=”quit.jsp”>这儿</a>退出系统
12. </body>
13. </html>

  此外,jbuilder将datetime标签库描述文件taglibs-datetime.tld拷贝到web-inf下,并对web.xml文件动了手脚,声明taglibs-datetime.tld所在的地址:

  代码清单 17 web.xml中声明标签描述文件

1. <?xml version=”1.0″ encoding=”utf-8″?>
2. …
3. <web-app>
4. <taglib>
5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri>
6. <taglib-location>/web-inf/taglibs-datetime.tld</taglib-location>
7. </taglib>
8. </web-app>

  如上所示,web.xml的第4~7行,jbuilder自动加入了datetime标签库的描述文件,以便web容器正确找到所需的信息。

  在编译工程生成web目录时,jbuilder会将datetime标签库的jar文件taglibs-datetime.jar拷贝到web-inf/lib目录下。

  当用户登录成功后,将转向welcome.jsp页面,其页面效果如下图所示:

JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
图 25 welcome.jsp效果页面

  当用户点击”这儿”的链接时,将链接到quit.jsp,quit.jsp页面负责清除session,清除session后,将引用session中的对象解绑并释放资源。
 
  quit.jsp退出处理页面

  由于http协议以请求/响应的方式工作,所以客户端退出系统时需要主动往web服务器发送一个请求,通知web服务器及时销毁会话,否则web服务器只会等到会话过期时才会销毁它。

  我们用一个quit.jsp来处理用户退出系统的操作,quit.jsp负责注销session,及时释放资源。

  ·注销session。

  ·关闭浏览器窗口。

  其代码如下所示:

1. <%@ page contenttype=”text/html; charset=gbk” %>
2. <%
3.  session.invalidate();
4. %>
5. <script language=”javascript” >
6.  window.opener = null;
7.  window.close();
8. </script>

  其中第3行负责注销session,原先放入session的对象将解绑定,等待垃圾回收以释放资源。对于本例而言,session中有一个名为ses_userbean的userbean对象(它是在switch.jsp中放入session的),调用session.invalidate()后,userbean从session中解绑定,它的valueunbound()方法会被触发调用,然后再等待垃圾回收。

  第5~8行是一段javascript脚本程序,负责关闭窗口,如果网页不是通过脚本程序打开的(window.open()),调用window.close()脚本关闭窗口前,必须先将window.opener对象置为null,如第6行所示,否则浏览器会弹出一个确定关闭的对话框,笔者发现这个问题困扰了不少的web程序员,故特别指出。

  实战经验:

  在用户退出系统时,需要注销session,否则只有等到session在服务器中过期后,session对象才会被清除。假设一个session的不活动最大时间为30分钟(默认的时间),如果不手工清除session对象,则当一个用户退出系统后再过30分钟,这些对象所占用的系统资源才会被释放。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » JBuilder2005实战JSP之特殊页面-JSP教程,Jsp/Servlet
分享到: 更多 (0)

相关推荐

  • 暂无文章