,JSP   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,JSP
您的位置:Yesky > 软件 > 开发者网络 > web开发 > 正文
JBuilder2005实战JSP之切换控制
[文章信息]
作者:陈雄华
时间:2005-05-24
出处:天极网
责任编辑:方舟
[文章导读]
由于在login.jsp的表单中通过action属性指定switch.jsp为响应的JSP文件,当用户在login.jsp中选定登录用户
advertisement
热点推荐
· 图文详解:黑客入侵方式演示
· Java异常处理的陋习展播
· 多媒体系列教程:网页设计制作
· Powerpoint动画演示教程连载
· 光盘刻录手册:禁忌与技巧(下)
[正文]

上一页  1 2 3  

  3.设置运行配置项

  在向导的最后一步,你可以为创建的JSP产生一个运行配置项,虽然向导将创建一个运行配置项设置为默认选项,但笔者认为这并不是一个合理的默认值,建议取消create a runtime configuration设置项,不要创建JSP的运行配置项,如下图所示:


  按Finish按钮创建switch.jsp文件,其代码如下所示:

  代码清单 8 向导创建的switch.jsp

1. <%@ page contentType="text/html; charset=GBK" %>
2. <html>
3. <head>
4.  <title>
5.   switch
6.  </title>
7. </head>
8. <jsp:useBean id="userBean" scope="page" class="bookstore.User" />
9. <jsp:setProperty name="userBean" property="*" />

10. <body bgcolor="#ffffff">
11. <h1>
12.  JBuilder Generated JSP
13. </h1>
14. </body>
15. </html>

  第8行是引用Bean的JSP标签,第9行用表单的数据填充Bean的属性值,即以名字匹配的方式将request的参数填充到Bean的属性中,同时完成类型转换(只有基本数据类型或构造函数支持的才可以完成转换)。在执行完第9行后,userBean中的userId和password属性将被设置为login.jsp页面中所发送过来的用户名和密码的值。

  因为switch.jsp只是用于控制,并不需要显示内容到客户端,所以我们去除switch.jsp中的HTML代码,将switch.jsp调整为:

  代码清单 9 去除静态HTML代码后的switch.jsp

1. <%@ page contentType="text/html; charset=GBK" %>
2. <jsp:useBean id="userBean" scope="page" class="bookstore.User" />
3. <jsp:setProperty name="userBean" property="*" />

  在switch.jsp中提供一段Scriptlet,将userId和password发送到数据库和T_USER表中的用户比较看是否是合法的用户,根据验证的结果转向不同的页面。switch.jsp的最终代码如下所示:

  代码清单 10 最终的switch.jsp

1. <%@page contentType="text/html; charset=GBK"%>
2. <%@page import="bookstore.*"%>
3. <%@page import="java.sql.*"%>

4. <jsp:useBean id="userBean" scope="session" class="bookstore.User"/>
5. <jsp:setProperty name="userBean" property="*"/>
6. <%
7. Connection conn = null;
8. try {
9.  conn = DBConnection.getConnection();
10. PreparedStatement pStat = conn.prepareStatement(
11.  "select USER_NAME from T_USER where USER_ID=? and password = ?");
12. pStat.setString(1, userBean.getUserId());
13. pStat.setString(2, userBean.getPassword());
14. ResultSet rs = pStat.executeQuery();
15. if (rs.next()) { //密码正确
16.  userBean.setUserName(rs.getString(1));//设置用户名
17.  session.setAttribute("ses_userBean", userBean);//将userBean放入Session对象中
18. %><jsp:forward page=" welcome.jsp "></jsp:forward>
19. <%} else { //密码错误%>
20. <jsp:forward page="fail.jsp"></jsp:forward>
21. <%
22.  }} finally {
23.   if(conn != null) conn.close();
24.  }

25. %>

  ·在第2~3行中引入Scriptlet代码中需要的类。

  ·第7~14行代码向数据库发送查询SQL语句并返回结果。

  ·第15行通过检查结果集的记录数间接判断用户密码是否正确。

  ·第16~18行是用户密码正确的响应代码,首先用结果集的USER_NAME属性填充userBean的userName属性值,然后将userBean对象放入Session中,最后转向welcome.jsp页面。

  ·当用户输入密码不正确时,结果集中将没有记录,此时rs.next()返回false,程序转向第20行,第20行的代码将页面转向到密码输入错误的处理页面fail.jsp。

  ·第22~24行的代码用于关闭数据库的连接。

  也许大家已经发现虽然第9~21行会抛出SQLException异常,但我们并没有相应的异常捕获块,在标准的Java程序中将导致一个编译期的错误,但在JSP中却可以顺序通过编译,这是因为JSP页面本身会捕获页面中抛出的所有异常。

  假设第11行的SQL查询语句发生有错误,如将用户表名误写为User(正确为T_USER),当switch.jsp被调用后,第14行将抛出SQLException异常,此时switch.jsp将显示出异常堆栈迹的跟踪信息页面,如下图如示:


图 14 可怕的错误处理页面

  上图所示的错误处理页面可谓青面獠牙,面目狰狞,非常不友好,对于开发人员来说这种报错页面也许是适合的,因为它提供了许多错误跟踪信息,但最终用户是不可能接受这种粗野的出错页面的。JSP允许你通过<%@ page errorPage%>为页面指定一个专门处理错误的JSP页面,以便用一种友好、直观的形式展现错误。在下一节里,我们将创建一个用于处理错误的JSP页面,在创建之后,我们再来为switch.jsp指定错误处理JSP页面。

上一页  1 2 3  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
,JSP相关内容,JSP焦点新闻
  • 利用JSP 2.0开发Web应用程序
  • JSP安全编程实例浅析
  • Taglib原理和实现之循环的Tag
  • JSP和Struts解决用户退出问题
  • Taglib 原理和实现之嵌套和属性读取
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,JSPAdvertisement