Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16493605
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:44:55

下载本文示例代码
  新增一个Struts配置文件  考虑到图书模块是一个比较独立的模块,为了避免对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" ""><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;//isbnString 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 BookActionForm8.  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错误信息显示出来。  此外,我们在reset()方法中将createDate属性置为当前的日期,因为这个属性值不是通过页面表单提供的。共3页。 1 2 3 8 :   新增一个Struts配置文件  考虑到图书模块是一个比较独立的模块,为了避免对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" ""><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;//isbnString 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 BookActionForm8.  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错误信息显示出来。  此外,我们在reset()方法中将createDate属性置为当前的日期,因为这个属性值不是通过页面表单提供的。共3页。 1 2 3 8 : 下载本文示例代码


JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增JBuilder2005 Struts深度体验之新增
阅读(113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~