JBuilder2005 Struts深度体验之升级

作者:网络 来源:佚名 更新时间:2008-07-07 12:23:35 点击:
注册会员,创建你的web开发资料库,

  用action控制器替换switch.jsp

  在《jbuilder 2005 servlet高级开发》中我们介绍了用户登录模块的流程,其中switch.jsp充当一个业务处理和页面转发的中心处理器。由于jsp的设计初衷是实现页面展现逻辑,而这里我们居然"倒行逆施",将jsp用作业务处理和页面转发,显然是不恰当的。我们原来的switch.jsp身兼数职:接收login.jsp页面的表单数据,查询数据库,转发页面,象一个事无巨细,有僭越之嫌的 "管家"总揽了所有的事情,程序没有分层,逻辑显得非常不清晰,象个大杂烩。

  其实servlet本身倒是比较适合开发switch.jsp所完成的功能,但在《jbuilder 2005 servlet高级开发》专题中,我们并没有用servlet斧正之,是因为我们希望在本专题中从更高的角度更完美地替换switch.jsp。

  可以通过struts框架对switch.jsp功能进行分解,switch.jsp通过<jsp:usebean>获取登录页面表单数据可以通过actionform机制实现;switch.jsp查询t_user数据表,判断用户是否是合法用户可以在action的execute()中处理;当未通过验证转向fail.jsp页面,如果发生异常转向error.jsp页面,当用户通过验证后转向welcome.jsp页面,可以在action中通过actionforward实现多出口切换。

  新增一个图书管理模块

  现实的图书管理模块,应该包括对图书进行增、删、改、查的功能,由于篇幅所限,我们仅提供图书新增的功能。数据库中必须提供一张表用于保存图书的信息,这张表名为t_book,其结构如图 4所示:


图 4 t_book表结构

  我们完全用struts框架实现图书新增的功能,jbuilder 提供了一个优秀的struts可视化设计工具(struts config editor),其中action designer能够非常形象地描述出一个业务功能操作流程,我们不妨就通过这个可视化设计器预览图书新增业务的程序结构,如图 5所示:


图 5 新增图书struts流程

  ·bookadd.jsp:图书录入的界面,在这儿你将学习到struts标签和资源文件的知识。

  ·bookactionform:由bookactionform类实现,保存bookadd.jsp表单提交的数据。在这儿,你将学习到如何创建actionform,actionform如何对数据有效性进行自检的知识。

  ·/bookinsertaction:由bookinsertaction类实现,即业务控制器,负责将bookactionform中的新增图书保存到数据库t_book表中,并导向到insertsuccess.htm页面。

  事前准备

  通过file->new project...创建一个名为bookstore的新工程,并在工程下创建名为webmodule的web模块,将原《jbuilder 2005 servlet高级开发》专题的代码覆盖该新工程对应的内容。

  用sql plus运行下面的sql语句创建t_book表:

  代码清单 5 创建t_book表的sql语句

1. create table t_book (
2. book_id varchar2(10) not null,
3. isbn varchar2(20) not null,
4. book_name varchar2(50) not null,
5. author varchar2(50),
6. create_date char(8),
7. constraint pk_t_book primary key (book_id)
8. );

  从这个sql中,我们可以看出book_id是表的主键,所以不允许重复,而isbn和book_name两字段不允许为空。它们决定了在图书添加时的数据检验规则。

  同样的,我们需要将必要的类添加到这个新工程的类库中。