JBuilder2005 Struts深度体验之新增
2008-02-23 07:49:32来源:互联网 阅读 ()
考虑到图书模块是一个比较独立的模块,为了避免对Struts配置文件的资源争用导致团队工程的覆盖或冲突,我们为这个模块单独提供一个新的Struts配置文件,用这个配置文件配置图书模块所有Struts关联的信息。
我们按照如下的方式为webModule模块添加一个名为book-struts-config.xml的配置文件。
首先到<工程目录>/webModule/WEB-INF拷贝一个原有的struts-config.xml文件,更名为book-struts-config.xml放在struts-config.xml相同的目录下,删除原有配置的内容,将其调整成:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
</struts-config>
然后,在工程窗格的资源树中定位到webModule->Deployment descriptors-><Struts 1.1>节点上,右击<Struts 1.1>节点,在弹出的菜单中选择Properties...弹出Properties for ’<Struts 1.1>’对话框,如图 16所示:
图 16 Struts配置文件维护对话框
点击Add...按钮,在弹出的Choose Struts config file对话框中选择book-struts-config.xml配置文件,按OK这个新的Struts配置文件将添加到Struts config file in web.xml列表中。
新增配置文件成功后,在工程窗格资源树的<Struts 1.1>节点下,你将会发现这个新加入的Struts配置文件,如下图所示:
图 17 两个Struts配置文件
这样,在创建新的FormBean或Action时,你就可以选择用哪个配置文件来保存Struts的配置信息了。
图书Action Form
下面我们着手创建用于接收新增图书页面表单数据的BookActionForm,使用book-struts-config.xml保存BookActionForm的配置信息。BookActionForm需要进行数据有效性自检,也就是说,要让BookActionForm实现validate()方法。
创建BookActionForm和创建UserActionForm相似,但是在向导的第1步需要指定book-struts-config.xml记录BookActionForm配置信息,如图 18所示:
图 18 选择不同的配置文件
我们在前一节为Web模块添加了一个配置文件,在Struts config下拉框中列出了Web模块所有配置文件,这里我们选择WEB-INF/book-struts-config.xml。
在向导的第2步,我们为BookActionForm定义下列5个属性:
String bookId;//图书ID,对应T_BOOK表的BOOK_ID,是主键。
String isbn;//isbn
String createDate;//创建日期
String bookName;//书名
String author;//作者
在向导的第2步直接按Finish创建BookActionForm。由于bookId属性是主键,所以不能和T_BOOK中已有的记录重复,这可以通过BookActionForm的数据自检机制来完成,数据自检是通过定义validate()方法来实现的。向导已经为BookActionForm生成了validate()方法框架,我们只需要在validate()方法编写bookId的校验的代码就可以了,BookActionForm的最终代码如代码清单 10所示:
代码清单 10 BookActionForm.java
1. package bookstore;
2.
3. import javax.servlet.http.HttpServletRequest;
4. import org.apache.struts.action.*;
5. import java.sql.*;
6.
7. public class BookActionForm
8. extends ActionForm {
9. …
10. public ActionErrors validate(ActionMapping actionMapping,
11. HttpServletRequest httpServletRequest) {
12. ActionErrors errors = new ActionErrors();
13. Connection conn = null;
14. try {
15. conn = DBConnection.getConnection();
16. PreparedStatement pStat = conn.prepareStatement(
17. "select count(*) count from T_BOOK where BOOK_ID=?");
18. pStat.setString(1, this.bookId);
19. ResultSet rs = pStat.executeQuery();
20. if (rs.next()&& rs.getInt(1) > 0) {
21. errors.add("bookId ",
22. new ActionMessage("bookstore.duplicate.bookId",
23. "图书ID和数据库中已经有的ID重复"));
24. }
25. }
26. catch (SQLException se) {
27. se.printStackTrace();
28. errors.add("bookId",
29. new ActionMessage("bookstore.dbaccess.error", "访问数据库时出错"));
30. }
31. finally {
32. try {
33. if (conn != null) {
34. conn.close();
35. }
36. }
37. catch (SQLException ex) {
38. ex.printStackTrace();
39. errors.add("bookId",
40. new ActionMessage("bookstore.dbaccess.error",
41. "访问数据库时出错"));
42. }
43. }
44. return errors;
45. }
46.
47. public void reset(ActionMapping actionMapping,
48. HttpServletRequest servletRequest) {
49. this.createDate = getCurrDateStr();
50. }
51.
52. //获取当前时间字符
53. private static String getCurrDateStr() {
54. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
55. return sdf.format(new Date());
56. }
57. }
当用户提交表单后,Struts框架自动把表单数据填充到ActionForm中,接着Struts框架自动调用ActionForm的validate()方法进行数据验证。如果validate()方法返回的ActionErrors为null或不包含任何ActionMessage对象,表示通过验证,Struts框架将ActionForm和HTTP请求一起传给Action的execute(),否则Struts框架将HTTP请求返回到输入的页面中,而输入页面即可通过<html:errors>显示对应request域中的ActionErrors错误信息显示出来。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JBuilder2005 Struts深度体验之改造 2008-02-23
- JBuilder2005 Struts深度体验之升级 2008-02-23
- JBuilder2005 Struts深度体验之概述 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash