网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  jbuilder2005 struts深度体验之新增     
  文章作者:未知  文章来源:水木森林  
  查看:93次  录入:管理员--2007-11-17  
 
  新增一个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" "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所示:
   jbuilder2005 struts深度体验之新增(图一)
  图 16 struts配置文件维护对话框
  
  点击add...按钮,在弹出的choose struts config file对话框中选择book-struts-config.xml配置文件,按ok这个新的struts配置文件将添加到struts config file in web.xml列表中。
  
  新增配置文件成功后,在工程窗格资源树的<struts 1.1>节点下,你将会发现这个新加入的struts配置文件,如下图所示:
   jbuilder2005 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所示:
   jbuilder2005 struts深度体验之新增(图三)
  图 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错误信息显示出来。
  
  此外,我们在reset()方法中将createdate属性置为当前的日期,因为这个属性值不是通过页面表单提供的。
  
  新增图书jsp页面
  
  1.通过向导创建bookadd.jsp
  
  通过jsp向导创建bookadd.jsp页面,在向导的第2步选择使用struts1.1的struts-bean和struts-html标签,如图 19所示:
   jbuilder2005 struts深度体验之新增(图四)
  图 19 指定选用struts标签
  
  2.使用jbuilder的struts标签构建jsp页面
  
  你可以直接用拖拽的方法从jbuilder编辑器左边的标签库将struts标签添加到jsp页面中,如图 20所示:
   jbuilder2005 struts深度体验之新增(图五)
  图 20 用拖拽的方式添加struts标签
  
  struts的html标签可以完成和标准的html元素相同的功能,struts提倡使用struts html标签库,因为这些标签可以和struts框架的其他组件紧密地联系起来。而strtus的bean标签库可以访问已经存在的javabean及其属性,有一些bean标签还可以访问http请求头信息及web资源文件的信息。
  
  我们希望用struts的html标签库创建添加图书的表单,通过bean标签库访问web资源文件作为表单组件前的标识文字。
  
  bookadd.jsp的最终代码如代码清单 11所示:
  
  代码清单 11 bookadd.jsp
  
  1. <%@page contenttype="text/html; charset=gbk" %>
  2. <%@taglib uri="/web-inf/struts-bean.tld" prefix="bean"%>
  3. <%@taglib uri="/web-inf/struts-html.tld" prefix="html"%>
  4. <html>
  5. <head>
  6. <title>bookinsert</title>
  7. <script language="javascript" >
  8. function mysubmit(form)
  9. {
  10. if(form.isbn.value == null || form.isbn.value == "")
  11. {
  12.  alert("图书的isbn不允许为空");
  13.  return false;
  14. }
  15. if(form.bookname.value == null || form.bookname.value == "")
  16. {
  17.  alert("图书名不允许为空");
  18.  return false;
  19. }
  20. }
  21. </script>
  22. </head>
  23. <body bgcolor="#ffffff">
  24. <html:errors/>
  25.  <html:form action="/bookinsertaction.do" focus="bookid" method="post"
  26.   onsubmit="return mysubmit(this)" >
  27.  <table width="100%%" border="0">
  28.   <tr>
  29.    <td>
  30.     <bean:message bundle="bookstore" key="bookstore.bookid"/>
  31.    </td>
  32.    <td>
  33.     <html:text name="bookactionform" property="bookid"/>
  3
 
 
上一篇: jbuilder2005 struts深度体验之改造    下一篇: 详细介绍用jbuilder9开发的struts实例
  相关文档
java远程方法调用(1) 11-17
工作流引擎shark中调用外部程序的方法 11-17
菜鸟第一招:给java的初学者 11-16
技术评论:明天,中间件在哪? 11-17
hibernate+ehcache二级缓存技术 11-17
timertask与timer使用示范 11-17
java的一些基本概念 11-17
java 学习之了解 java 的运行环境 11-17
基于jndi的应用程序开发 11-16
用jai扩展java的图像处理能力 11-17
antlr入门详细教程 11-17
php应用实例:实现给上传图片加水印图案 09-19
使用j2me技术实现简单的动画(附代码实现) 11-17
用javamail写简易电子邮件发送系统 11-17
number 对象 11-16
细述java技术开发规则--中级篇 11-16
bea tuxedo 开发心得 11-17
利用开源项目hibernate开发blog系统 11-16
在图形编程中用textlayout精确绘制字符串 11-17
设计模式的原则 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息