文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程JSPJBuilder2005实战JSP之切换控制
精品推荐
特别推荐
·什么是 JSP 技术?
·JSP简介
·JSP数据库操作例程
·新手入门:学习JSP的经典的入门学习资料
·由浅入深学习动态网页制作PHP的编程与应用
·输入汉字自动转为拼音(jsp实现方式)
·经验分享 JSP程序员完全蜕变手册
·JSP实战:JBuilder2005中创建数据库表
·新手入门:JSP基本语法与简单表单处理
·使用技巧:在JSP页面中的应用JavaBean
·实例:JSP中把动态页面转换为静态页面
·使JSP/Servlet应用程序优化的八种方法
·提升JSP页面响应速度的七大秘籍绝招
·jsp中文问题解决方案(完整版)
·jsp的八个隐含对象
·用jsp实现SQLServe数据库的备份和恢复
·深入浅析JSP安全编程实例
·jsp防盗链
·js技巧收集(200多个)
·JSP应用语法详解大全 (3)
热点TOP10
·JSP简介
·目前最好的JSP分页技术(考虑到数据库移植,并修正过效率)
·在jsp中用bean和servlet联合实现用户注册、登录
·js技巧收集(200多个)
·用JSP+JavaScript打造二级级联下拉菜单
·关于JSP Commons FileUpload 组件上传文件的一些总结
·水晶报表的jsp实现
·目前最好的JSP分页技术
·不用迭代算法而快速实现的jsp树结构
·用JSP从数据库中读取图片并显示在网页上
·新手入门:学习JSP的经典的入门学习资料
·jsp-servlet技术:一篇写的详细的session的好文章
·在一个jsp页面实现二级下拉框联动
·JSP上传图片并生成缩略图
·输入汉字自动转为拼音(jsp实现方式)
·树形目录的递归实现数据库+jsp+javabean
·JSP连接SQL Server 2000系统配置
·jspSmartUpload上传下载全攻略
·jsp在线考试系统-jsp文件
·什么是 JSP 技术?

JBuilder2005实战JSP之切换控制

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


  由于在login.jsp的表单中通过action属性指定switch.jsp为响应的JSP文件,当用户在login.jsp中选定登录用户,输入密码提交表单后,客户端将向服务器发送一个HTTP请求,服务器即调用switch.jsp来响应这个请求。

  表单中用户名和密码两组件的数据将通过HTTP请求传给服务器的switch.jsp,服务器将这些信息封装在request对象中传给switch.jsp,所以switch.jsp可通过request.getParameter(String paraName)来获取这两个值。

String userId = request.getParameter("userId");
String password = request.getParameter("password");

  试想如果login.jsp的表单有10个以上的数据组件,则在switch.jsp中必须通过相应数目的request.getParameter()方法获取其值。此外,如果这些数据不是字段串类型,而是整数或浮点数,由于request.getParameter()方法返回的值都是String,还必须进行类型的转换,这种工作不但单调乏味,还容易出错。

  JSP允许你通过Bean以映射的方式接收网页表单的数据,Bean以这个规则映射表单的数据:Bean属性名=表单数据组件名,也即所有和Bean属性名相同的表单数据域被自动填充到Bean中,并且完成数据类型的转换。如login.jsp的表单中有两个数据组件,一个名为userId,另一个是password,定义一个拥有相同名的userId和password属性的User.java Bean,这个Bean将可以自动接收表单中的两个数据组件值。

  编写User.java

  我们先来编写这个User.java的Bean,在工程中创建User.java,其代码如下所示:

  代码清单 7 User.java

1. package bookstore;
2.
3. public class User
4. {
5. private String userId;//用户Id
6. private String password;//密码
7. private String userName;//用户名
8. public String getPassword() {
9. return password;
10. }
11. public String getUserId() {
12. return userId;
13. }
14. public String getUserName() {
15. return userName;
16. }
17. public void setPassword(String password) {
18. this.password = password;
19. }
20. public void setUserId(String userId) {
21. this.userId = userId;
22. }
23. public void setUserName(String userName) {
24. this.userName = userName;
25. }
26. }

  除userId和password两属性名,还有一个用户名属性userName,这个属性的值不是从login.jsp的表单接收的,当用户名密码验证正确后,从数据表T_USER表中获取用户名保存在这个属性中,以便其他地方引用,保存并编译这个类。

  提示:

  你可以通过JBuilder的Bean Express工具快速创建User.java的代码,在一般情况下,你应该通过Bean Express来创建Bean的属性,这样不但自动产生get/set的属性访问方法,还保证了Bean命名规范。


  编写页面程序

  在创建User.java 的Bean后,我们着手创建switch.jsp,在switch.jsp中引用这个Bean。

  通过File->New..->Web->双击JSP图标启动创建JSP向导。

  1.指定swith.jsp名字


图 10 指定switch.jsp的名字

  一直按Next到向导的第3步。

  2.引用User.java Bean


图 11 指定JSP中引用Bean

  点击Add Bean...按钮,弹出Select a Class对话框,在对话框中选择bookstore.User类,如下图所示:


图 12 选择类作为Bean

  按OK后,返回到向导第3步的对话框,此时对话框的Bean列表中多了一行记录,可以在ID栏中为Bean指定一个名字,在Scope中指定Bean的作用域,如下图所示:


图 13 引用一个Bean

  我们为User的Bean取名为userBean,将其作用域设置为page域。page域即为页面作用域,在当前页面范围作用域内可用,当JSP返回响应,或请求转到其他的JSP页面中时,都不可用了,其他3个作用域说明如下:

  ·request作用域:当一个请求产生直到返回响应的范围内都是有效的,如a.jsp中声明为request作用域的Bean,当a.jsp通过<jsp:forward>转移请求到b .jsp页面中时还是可用的。

  ·session作用域:在用户会话的周期内都是可用的,会话周期为用户登录系统直到其退出系统为此。

  ·application作用域:这个作用域最长,表示Web容器启动直到关闭都是有效的。

  按Next到下一步。

  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页面。

(出处:清风网络学院






上一篇:JBuilder2005实战JSP之登录页面

下一篇:JBuilder2005实战JSP之错误处理

JBuilder2005实战JSP之切换控制 相关文章:
·“黑客”教你如何远程控制计算机
·控制射精训练
·用FLASH遮罩效果做图片切换效果
·CS起源-控制台命令大全
·网页中的多媒体播放控制
·如何方便地切换输入法
·女性控制男性射精时间技巧
·音量控制 随心所欲
·Flash用鼠标控制图片移动效果动画教程
·用IE即可轻松远程控制对方电脑
JBuilder2005实战JSP之切换控制 相关软件:
·3ds max & NURBS曲面建模实战教程
·超级短线实战经典
·风险管理与内部控制(普华永道)
·《真实战争》简体中文版
·注册表优化实战练习手册(图文教程 菜鸟先飞系列教材)
·地面控制 2中文版
·矢量绘图大师CorelDRAW 11完全实战
·3ds max & reactor动力学特效实战教程
·System Spec(控制系统软件)V2.40 绿色版
·CoreIDRAW实战锦囊

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot