基于J2EE的SSH 整合应用及操作示例二(CRUD操作及配置)

基于J2EE的SSH
整合应用及操作示例二(CRUD操作及配置)
2009-10-08 09:25:22
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://gaochaojs.blog.51cto.com/812546/210131
CRUD
是指在做计算处理时的增加(Create) 、查询(Retrieve) (重新得到数据)、更新(Update) 和删除(Delete) 几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。
In computing, CRUD is an acronym for create, retrieve, update, and delete. It is used to refer to the basic functions of a database or persistence layer in a software system.
C reate new records
R etrieve existing records
U pdate existing records
D elete existing records.
在响应新增部门请求中,通过导入Struts 的配置文件(struts-config.xml) 来完成业务流程的部署。它把depAdd.jsp depAdd.do 连接起来。depAdd.jsp 上产生客户请求,depAdd.do 则对请求产生响应、处理jsp 页面上的数据。当点击depAdd.jsp 上的保存按钮
( <div style="float: right; padding: 10px 25px 0 0;" <div class="right_button" <a href="#" οnclick="check();return false;"><bean:message  key="go.add" /> </a>  </div> 
</div>)
先检查页面数据的正确性,校验通过后将输入数据用 Set 方法存入到 userinfoForm 这个 FormBean 中。
function check()  var userName = document.userinfoForm.userName.value;  var password = document.userinfoForm.password.value;  var length = document.userinfoForm.password.value.length;  var repassword = document.userinfoForm.repassword.value;  var tel = document.userinfoForm.tel.value;  var department = document.userinfoForm.department.value;  if(userName=="")  alert('部门管理员姓名不能为空!')  return false

if(password=="")  alert('密码不能为空!')  return false if(length<6||length>10)  alert('密码必须大于6个字符小于10个字符!')  return false if(repassword=="")  alert('重复密码不能为空!')  return false if(password!=repassword)  alert('密码输入不一致!')  return false if(tel!="")  No = "0123456789()+-"  for(i=0; i<tel.length; i++)  var Checkstr = tel.charAt(i);  if (No.indexOf(Checkstr)== -1)  alert("联系电话格式不正确!");  return false if(department=="")  alert('部门管理员所属部门不能为空!')  return false

else  document.userinfoForm.submit(); 

然后根据 struts-config.xml 调用 depAdd.do ( 这将在 Spring 配置文件中指定相应的 Action) 进行业务处理。在 depAdd.do 中页面数据将从 userinfoForm 中读取。 depAdd.do 执行成功后将显示 /ok.jsp 页面。 depAdd.do 对应的 Action (DepAddAction) Spring 的配置文件 (applicationContext.xml) 中指定。要把 depAdd.do DepAddAction 对应起来 , 首先要在 struts-config.xml 中配置 Delegating RequestProcessor 。其次,需要在 application Context.xml 中定义名字为“ /depAdd ”的受管 JavaBean 。每次对 DepAddAction 请求时, Delegating Request Processor 将充当代理。同时, DepAddAction 使用到受管 Java Beansm Service 。要使用 UserinfoService ,需要在 DepAddAction 中生成 UserinfoService get() set() 方法,并且 application Context.xml 中对“ /depAdd ”进行 Dep Add Action 的依赖注入。因为 DepAddAction 并没有直接去操作数据访问 Userinfo DAO 。而是通过调用业务逻辑层 UserinfoService 中的方法来实现业务逻辑的。 DepAddAction 中部分代码如下:
String userName = userinfoForm.getUserName();  String pwd = userinfoForm.getPassword();  String rePwd = userinfoForm.getRepassword();  String tel = userinfoForm.getTel();  String dep = userinfoForm.getDepartment(); 

// 生成userinfo对象  Userinfo userinfo = new Userinfo(); 

// 将从表单中获得的值赋给该对象  userinfo.setUserName(userName);  userinfo.setPassword(pwd);  userinfo.setTel(tel);  userinfo.setDepartment(dep);  userinfo.setUserType("dep");// 所有新增用户类型一律为dep  // 数据入库 
userinfoService.save(userinfo);
如果 depAdd.do 要对应另一个 Action ,则只要修改 applicationContext.xml 即可,这将有利于系统的更新。同样,如果另一个 .do 要对应 DepAddAction ,也只要在 applicationContext.xml 中配置即可,这将有利于代码的重用。在本系统中, Hibernate Spring 共用一个配置文件 applicationContext.xml Hibernate applicationContext.xml 中读取和数据库有关的信息。数据库信息包括数据库连接、与数据库结构相对应的映射文件。在新增部门请求中,涉及到的数据库表为 userinfo 表,它所对应的映射文件为 Userinfo.hbm.xml 。为了访问数据库表 userinfo ,只有 Userinfo.hbm.xml 映射文件是不够的,还需要数据访问类 UserinfoDAO 、数据类 AbstractUserinfo,Userinfo 。数据类 Userinfo 的实现较为简单,它只是 Java 对象与数据库表之间的对应,主要用于在各应用层间传递数据,在它的基础上要实现的就是数据访问类 UserinfoDAO 。系统在生成 UserinfoDAO 的同时,也将 UserinfoDAO 作为 JavaBean 配置到 applicationContext.xml 中。 UserinfoDAO 中是对 userinfo 表进行保存、查询、删除或修改等基本数据操作,在 applicationContext.xml 中需要 userinfoService 进行 UserinfoDAO 及其代理的依赖注入。这样做,使得当 UserinfoDAO 变化时,只需修改 applicationContext.xml userinfoService 实现新的注入,指向新的实现就可以了,由此解除了数据访问层和业务层的紧密耦合。数据访问类 UserinfoDAO 继承于辅助类 Hibernate-DaoSupport ,借助于 getHibernateTemplate() 获得对 Hibernate 资源的操作,极大的方便了 Hibernate 框架的使用。在 UserinfoDAO 中定义了对数据库表 userinfo 的操作函数。如下面代码,即是 UserinfoService 中调用的 saveData 方法。
public class UserinfoDAO extends HibernateDaoSupport implements IUserinfoDAO {  private static final Log log = LogFactory.getLog(UserinfoDAO.class); 

protected void initDao() {  // do nothing 

public void save(Userinfo transientInstance) {  log.debug("saving Userinfo instance");  try getHibernateTemplate().save(transientInstance);  log.debug("save successful");  } catch (RuntimeException re) {  log.error("save failed", re);  throw re; 
}
部门添加模块中 applicationContext.xml 中的代码如下:
<!-- 创建事务管理类 -->  <bean id="transactionManager"  class="org.springframework.orm.hibernate3.HibernateTransactionManager">  <property name="sessionFactory">  <ref local="sessionFactory" />  </property>  </bean>

<!-- 创建用户事务代理类 -->  <bean id="userinfoDAOProxy"  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  <property name="transactionManager">  <ref bean="transactionManager" />  </property>  <property name="target">  <ref local="UserinfoDAO" /> </property>  <property name="transactionAttributes">  <props>  <prop key="save*">PROPAGATION_REQUIRED</prop>  <prop key="modify*">PROPAGATION_REQUIRED</prop>  <prop key="delete*">PROPAGATION_REQUIRED</prop>  <prop key="get">PROPAGATION_REQUIRED,readOnly</prop>  <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>  </props> </property>  </bean>

… 

<!--进行UserinfoDAO及其代理的依赖注入-->  <bean id="UserinfoService" class="com.dpt.ec.service.impl.UserinfoService"> <property name="userinfoDAO">  <ref bean="userinfoDAOProxy" />  </property>  </bean>

… 

<!--调度管理#新增部门管理员 -->  <bean name="/depAdd" class="com.dpt.ec.web.action.admin.DepAddAction"  singleton="false">  <property name="userinfoService">  <ref bean="UserinfoService" />  </property>  </bean>  部门添加模块中struts-config.xml中的代码如下:  <form-beans>

… 

<form-bean name="userinfoForm" type="com.dpt.ec.web.form.UserinfoForm" />  </form-beans>  … 

<!-- 调度管理#新增加部门管理员-->  <action path="/depAdd" name="userinfoForm"  type="org.springframework.web.struts.DelegatingActionProxy" scope="request" validate="false">  <forward name="success" path="/ok.jsp" />  <forward name="warning" path="error.pub" />  <forward name="failure" path="error.sys" />  </action>

在本项目的开发过程中运用这样的技术方法大大提高了开发效率、增加了程序的可读性、减少了模块间的耦合性,这样使得系统更加容易更新和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值