分享
 
 
 

Webwork2结合Spring, Hibernate

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Webwork2结合Spring, Hibernate

从User说起,包括创建/修改/删除User,以及对User的列表,先看Webwork2的Action代码

为简单说明问题,不考虑什么Interceptor, Duplicated Submit, Validation,等问题

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

java代码:

1 UserManager userManager;

2

3 public void setUserManager(UserManager) {

...}

4 this.userManager = userManager;

5 }

6

7 public String create() {

...}

8 userManager.create(getUser());

9 }

10

11 public String modify() {

...}

12 userManager.modify(modifyUser())

13 return "success";

14 }

15

16 public String remove() {

...}

17 userManager.remove(getUser())

18 return "success";

19 }

xwork.xml相关代码

java代码:

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代码:

1 <bean id="userManager" class="com.caryo.user.DefaultUserManager">

2 <property name="userDAO"><ref local="userDAO"/></property>

3 </bean>

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

java代码:

1 UserManager userManager;

2

3 public void setUserManager(UserManager) {

...}

4 this.userManager = userManager;

5 }

6 // userManager的获取可放在一个User的根类声明,如AbstractUserAction,这里重复为了看得清楚些

7

8 public List getAllUsers() {

...}

9 userManager.getAllUsers();

10 }

11

12 public List getOnlineUsers() {

...}

13 userManager.getOnlineUsers();

14 }

xwork.xml相关代码

java代码:

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代码:

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代码:

1 public class HibernateVehicleDAO extends CaryoHibernateObjectDAO implements VehicleDAO {

...}

2

3 Class vehicleClass;

4

5 public Class getPersistentClass() {

...}

6 return vehicleClass != null ? vehicleClass : (vehicleClass = Vehicle.class);

7 }

8

9 public Vehicle getById(final long id) {

...}

10 return (Vehicle) getByClassId(id);

11 }

12

13 public List findAllGlobalVehicles() {

...}

14 return findNamedQuery("caryo.vehicle_findAllGlobalVehicles");

15 }

16 }

vehicle.hbm.xml相关代码

java代码:

1 <query name="caryo.vehicle_findAllGlobalVehicles"><![CDATA[

2 from Vehicle vehicle

3 ]]></query>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有