Webwork2结合Spring, Hibernate

原创 2004年10月15日 09:45:00
Webwork2结合Spring, Hibernate
从User说起,包括创建/修改/删除User,以及对User的列表,先看Webwork2的Action代码
为简单说明问题,不考虑什么Interceptor, Duplicated Submit, Validation,等问题

创建/修改/删除User:UserAction.java相关代码

java代码: copy.gif

  UserManager userManager;
  
code.gif public void setUserManager(UserManager) {
      this.userManager = userManager;
  }
  
code.gif public String create() {
      userManager.create(getUser());
  }
 10 
code.gif11 public String modify() {
 12     userManager.modify(modifyUser())
 13     return "success";
 14 }
 15 
code.gif16 public String remove() {
 17     userManager.remove(getUser())
 18     return "success";
 19 }



xwork.xml相关代码
java代码: copy.gif

 1 <action name="user" class="com.caryo.user.actions.UserAction">
 2     <external-ref name="userManager">userManager</external-ref>
 3     <result name="success" type="dispatcher">user.jsp</result>
 4 </action>



webwork action会自动接受页面上传过来的信息,而且还支持JavaBean的BeanInfo(BeanInfo没用过,偶
都是直接在action中完成获取属性,以及类型转换与校验的工作的)
Webwork2很方便的支持了Command模式,允许一个Action拥有多个Command,对应的url调用
user!create.action, user!modify.action, user!remove.action,会对应的调用UserAction中的方法,
然后根据方法返回值去寻找对应的View,return "sucess" 就会forward到user.jsp。
其中的userManager是Spring中applicationContext中定义的bean

java代码: copy.gif

 1 <bean id="userManager" class="com.caryo.user.DefaultUserManager">
 2     <property name="userDAO"><ref local="userDAO"/></property>
 3 </bean>



对User的列表:ListUserAction.java相关片断

java代码: copy.gif

  UserManager userManager;
  
code.gif public void setUserManager(UserManager) {
      this.userManager = userManager;
  }
  // userManager的获取可放在一个User的根类声明,如AbstractUserAction,这里重复为了看得清楚些
  
code.gif public List getAllUsers() {
      userManager.getAllUsers();
 10 }
 11 
code.gif12 public List getOnlineUsers() {
 13     userManager.getOnlineUsers();
 14 }



xwork.xml相关代码
java代码: copy.gif

 1 <action name="listuser" class="com.caryo.user.actions.ListUserAction">
 2     <external-ref name="userManager">userManager</external-ref>
 3     <result name="success" type="dispatcher">listuser.jsp</result>
 4 </action>



这样对应的url就是listuser.action,无command模式下会自动执行public String execute()这一方法,
Default是一个返回"success"的空方法,当然你也可以重写此方法,例如做校验等等。

listuser.jsp中使用webwork taglib打出User列表的片断
java代码: copy.gif

 1 <ww:iteraor value="allUsers">
 2 userId: <ww:property value="id" />
 3 userName: <ww:property value="name" />
 4 </ww:iterator>
 5 
 6 <ww:iteraor value="onlineUsers">
 7 userId: <ww:property value="id" />
 8 userName: <ww:property value="name" />
 9 </ww:iterator>



webwork taglib功能比较强大,其中还可使用带参数的方法调用,而且在逻辑控制等方面都考虑的比较完善
详细参见 http://wiki.opensymphony.com/pages/viewpage.action?pageId=1876
只要设计合理,基本上使用其taglib就可以控制整个view,包括复杂的页面。尽管也支持Velocity, Freemarker等
不过考虑到性能,推荐还是使用jsp view。
大型网站的UI层应该尽可能的薄,JSP不易维护,我觉得taglib是可接受的厚度的上限了。

Spring+hibernate的部分跟dhj1版主的相近,http://forum.javaeye.com/viewtopic.php?t=7925
偶就不重复了。只说一些不同的地方
1. web.xml 可以使用listener来初始化基本信息而不是用servlet
2. 在Session in DAO中,用iterator返回数据应该是不行的,那么要获取count,不是iterator.next()
也不是获取整个list,然后list.size(),而应是一个list.get(0);
3. 可将HQL放到对应的hbm.xml中
java代码: copy.gif

code.gif public class HibernateVehicleDAO extends CaryoHibernateObjectDAO implements VehicleDAO {
     
          Class vehicleClass;
  
code.gif         public Class getPersistentClass() {
                  return vehicleClass != null ? vehicleClass : (vehicleClass = Vehicle.class);
          }
         
code.gif         public Vehicle getById(final long id) {
 10         return (Vehicle) getByClassId(id);
 11         }
 12 
code.gif13         public List findAllGlobalVehicles() {
 14                 return findNamedQuery("caryo.vehicle_findAllGlobalVehicles");
 15         }
 16 }



vehicle.hbm.xml相关代码
java代码: copy.gif

 1 <query name="caryo.vehicle_findAllGlobalVehicles"><![CDATA[
 2     from Vehicle vehicle
 3 ]]></query>

  浏览发表者的主页

Spring+Hibernate结合总结

过去一星期主要把精力放在了数据库Hibernate和Spring的结合上,所以也搜集和总结了一些有用的资料,整理如下。 自己最大的感受是Spring对Hibernate提供了非常好的支持,包括Ses...
  • u010122002
  • u010122002
  • 2014年11月08日 11:30
  • 716

Webwork2结合Spring, Hibermate

Webwork2结合Spring, Hibernate从User说起,包括创建/修改/删除User,以及对User的列表,先看Webwork2的Action代码 为简单说明问题,不考虑什么Interc...
  • yangghosts
  • yangghosts
  • 2008年11月09日 20:22
  • 144

spring jpa结合hibernate配置

srping jpa herbernate的相关配置
  • a36600003
  • a36600003
  • 2016年09月10日 13:28
  • 342

WebService CXF学习(高级篇2):CXF+Spring+Hibernate

前一节仅仅只讲了与Spring整合,没有涉及到数据库,而且是直接将Java象传递到服务端。这一节我起到一个回顾前面章节的作用。用在客户端运用JABX将JAVA对象编组成XML文件,在客户端将XML解组...
  • oneGeng
  • oneGeng
  • 2010年11月02日 09:57
  • 2859

Hibernate3使用(二)Spring整合Hibernate,使用xml配置

1、spring xml文件配置 这个时候hibernate.cfg.xml就可以不要了
  • vvhesj
  • vvhesj
  • 2015年08月27日 19:51
  • 1146

hibernate和spring和struts2工作原理

原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的读取并解析映射信息 3....
  • lurao
  • lurao
  • 2015年11月28日 09:45
  • 1212

基于spring+hibernate+cxf写的webservice服务,详细配置

首先下载Apache-cxf的jar包下载地址:http://www.apache.org/dyn/closer.lua/cxf/3.0.13/apache-cxf-3.0.13.zip搭建好spri...
  • u010652906
  • u010652906
  • 2017年05月27日 10:32
  • 370

Struts1+Hibernate+Spring整合实例(一)

SSH博文写的也差不多了,这篇主要是通过做一个完整简单的小例子,来整合下前面学到的东西,顺便把后面写的两篇Maven和Ant也加入进来,如果SSH或Maven、Ant这些东西不懂,可先看其他文章。项目...
  • StubbornPotatoes
  • StubbornPotatoes
  • 2013年02月19日 22:41
  • 7625

Spring集成ORM框架之Hibernate的使用

最近在学习Spring整合ORM框架。在使用Hibernate的时候遇到很多问题,花费了几天时间总算解决了。Hibernate的主要接口是org.hibernate.session,session提供...
  • polo_longsan
  • polo_longsan
  • 2015年06月10日 21:43
  • 797

springmvc4+hibernate4整合框架的搭建,超详细哦

spring
  • baidu_23086307
  • baidu_23086307
  • 2016年09月16日 11:00
  • 4040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Webwork2结合Spring, Hibernate
举报原因:
原因补充:

(最多只允许输入30个字)