??xml version="1.0" encoding="utf-8" standalone="yes"?>
下蝲面地址Q?a >https://bba96.dev.java.net/servlets/ProjectDocumentList?folderID=4149&expandFolder=4149&folderID=0
如果你用spring+hibernateQ而又不喜Ƣhibernate criteria的麻烦,不妨试一下bba96Q你可以把主要精力放C务方面。DefaultEntityManager提供了很多单层逻辑的便利方法给你用,其中也包括执行hsql或者sql查询/更新的方法,如果你要多层ơ逻辑的条件查询可以自q装QueryObjectQ参见com.bba96.tiger.util.QueryWebUtils的main函数。bba96q提供给你在view层自由增加查询的能力?br />
tiger版本仅提供了dao/service部分Q所以如果你希望在view 查询的安全性方面得到加强,可参考bba96 2.0其中的webwork view部分Q权限部分也没有包含在tiger中,希望快把包括例子的权限部分q移q来Q但q需要一Ҏ_最q在忙一个CMS的品,旉不够用啊…?/p>
?a class="" title="春天的旁? target="_blank">SpringSide目中webwork MVC部分应用到bba96 tiger对view部分的查询,有兴可以看看,q里也要推荐一?a class="" title="春天的旁? target="_blank">SpringSideQ确实有很多很好的经验在里面可以借鉴?/p>
Changes in version 2.0 alpha2.2 (2006.3.16)
*update webwork's jar for fixing example bug in weblogic
*remove all contentType setting in example
Changes in version 2.0 alpha2.1 (2006.3.8)
*fix example bug
*update readme.txt
Changes in version 2.0 alpha1 (2006.3.7)
*webwork 2.2 support
*hibernate 3.x support, then support native sql
*fix some bug
*add aop security module
*add action query parameters validation
*enhance action query parameters management
*support more logic in action query
*support multi orderby property
Changes in version 1.0 (2005.09.23)
*release first
源码下蝲Q包含两个快速开发的例子。)
https://bba96.dev.java.net/servlets/ProjectDocumentList?folderID=4149&expandFolder=4149&folderID=0
介参?a href="/scorpio_leon/archive/2005/11/09/18878.aspx">http://www.aygfsteel.com/scorpio_leon/archive/2005/11/09/18878.aspx
Finds a localized text message for the given key, aTextName. Both the key and the message itself is evaluated as required. The following algorithm is used to find the requested message:
主要是查找resource bundleQ下面说明一?BR>1. 先查找该classQ一般我们是在action调用Q就是该action对应的class了)对应的properties文gQ找不到再去扑֯应的接口Q找不到再去从该class的承树上去重复前面的步骤?BR>2. 如果是ModelDriverQ以上找不到再以model的class去重?的步?BR>3.l箋找,如果key是符合ognl表达式还以ognl表达式去解析c,如果能找到类Q还以以上的步骤L?BR>4. q找不到Q就从根据package以及package的承树LQ这q包括了该class的承树所有的class的package树(q一步存在了太多的重复查扑ַ作,因ؓ很多package都是相同的)
5 使用默认的resource bundle
java.util.ResourceBundle虽然有cacheQ但是wwZ减少调用getResourceBundleҎQ也l护了一个miss的hashsetQ找不到的bundle name׃q去Q那么每一ơ查N同步了这个missQ如果很多次查找Q开销也是很大的?BR>
我就举一个例子,pW四步查找package树好?BR>
假设你的actionl承树是q样
com.bba96.core.webwork.actions.DefaultActionSupport
com.xxxx.web.actions.XXXActionSupport
com.xxxx.web.user.actions.UserAction
com.xxxx.web.user.ViewUserAction
且不说ww没有判断是否是com.opensymphony.xwork.ActionSupport或者ww的接口就停止Q光是自ql承树,是4+3+3+3=13ơ,再加上往上的l承树以及对应的接口Qcom.opensymphony.xwork.ActionSupport以及Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable, ContinuableObject的接口,查找ơ数过30ơ甚x多,q里的每一ơ都有一个同步miss的过E,开销相当大?BR>
如果你的key所在的resource bundle没有对应到合适的class或packageӞ例如说放在了default bundle中,ww会浪费很多时间。这U情况下Q我在没有ƈ发的时候测了一下,一ơgetText大概耗时40ms左右
所以在实际应用我们应该避免q种情况出现Q要不让resource bundle一一对应classQ要不就自己实现一个简单的getTextQ其实要是ww的ActionSupport的textProvider允许改变最好了?/P>
Get Up And Running Quick
Example: (1) enter the example/simple or emample/book folder.
NOTE:all following operation is under the folder you entered
(2) copy your JDBC driver (default mysql) to the lib directory
-- webapps\ROOT\WEB-INF\lib
(3) edit hibernate.properties for database info (default mysql)
-- src\main\java\hibernate.properties
(4) run "ant"
(5) create database via the sql script generated at database\schema-export.sql
(6) edit applicationContext.xml for database info (default mysql)
-- webapps\ROOT\WEB-INF\applicationContext.xml (line 5 - 21)
(7) start server and see this example
有用上的讨论,误pL MSN: hotmail的帐号scorpio_leon
因ؓ要拦截可能抛出的异常Q流E是q样service - my service interceptor - action - xwork interceptor
现在断在actionq里了,很奇怪,webwork其他Ҏ都有throw exceptionQ独独这个没有,N又要hack webworkQ?BR>恩,有了AOP后,接口设计应该要多考虑一下,是否允许抛出异常…?/P>
q里用到?A >jakarta common email中的SimpleEmail
EmailScheduler是一个利?A >Opensymphony Quartz做简单的调度Q其中EmailJob实现了Quartz的Job接口
以下是EmailScheduler以及EmailJob源代码?/P>