首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:829522
建立时间:2004年11月4日
 
 
 
[java]Webwork2+Spring+Hibernate体验
[ 2006/8/8 17:18:42 | By: 玻璃杯中的花生壳 ]
 
嘿嘿,偶来介绍下Webwork2结合Spring, Hibernate,Default认为对Spring,Hibernate有一定了解。 从User说起,包括创建/修改/删除User,以及对User的列表,先看Webwork2的Action代码 为简单说明问题,不考虑什么Interceptor, Duplicated Submit, Validation,等问题 创建/修改/删除User:UserAction.java相关代码 java代码:  UserManager userManager; public void setUserManager(UserManager) {     this.userManager = userManager; } public String create() {     userManager.create(getUser()); } public String modify() {     userManager.modify(modifyUser())     return "success"; } public String remove() {     userManager.remove(getUser())     return "success"; }xwork.xml相关代码 java代码:  <action name="user" class="com.caryo.user.actions.UserAction">     <external-ref name="userManager">userManager</external-ref>     <result name="success" type="dispatcher">user.jsp</result> </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代码:  <bean id="userManager" class="com.caryo.user.DefaultUserManager">     <property name="userDAO"><ref local="userDAO"/></property> </bean>对User的列表:ListUserAction.java相关片断 java代码:  UserManager userManager; public void setUserManager(UserManager) {     this.userManager = userManager; } // userManager的获取可放在一个User的根类声明,如AbstractUserAction,这里重复为了看得清楚些 public List getAllUsers() {     userManager.getAllUsers(); } public List getOnlineUsers() {     userManager.getOnlineUsers(); }xwork.xml相关代码 java代码:  <action name="listuser" class="com.caryo.user.actions.ListUserAction">     <external-ref name="userManager">userManager</external-ref>     <result name="success" type="dispatcher">listuser.jsp</result> </action>这样对应的url就是listuser.action,无command模式下会自动执行public String execute()这一方法, Default是一个返回"success"的空方法,当然你也可以重写此方法,例如做校验等等。 listuser.jsp中使用webwork taglib打出User列表的片断 java代码:  <ww:iteraor value="allUsers"> userId: <ww:property value="id" /> userName: <ww:property value="name" /> </ww:iterator> <ww:iteraor value="onlineUsers"> userId: <ww:property value="id" /> userName: <ww:property value="name" /> </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代码:  public class HibernateVehicleDAO extends CaryoHibernateObjectDAO implements VehicleDAO {             Class vehicleClass;         public Class getPersistentClass() {                 return vehicleClass != null ? vehicleClass : (vehicleClass = Vehicle.class);         }                 public Vehicle getById(final long id) {         return (Vehicle) getByClassId(id);         }         public List findAllGlobalVehicles() {                 return findNamedQuery("caryo.vehicle_findAllGlobalVehicles");         } }vehicle.hbm.xml相关代码 java代码:  <query name="caryo.vehicle_findAllGlobalVehicles"><![CDATA[     from Vehicle vehicle ]]></query>
 

阅读全文(5352) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144806842 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号