Unmi 的 Struts2 学习笔记(八)

吾同人数进寺庙,却从未点过一柱香。概因精神世界里终无所寄托。既不为生儿还是女而筹算,也无须因落下亏心事要请得神灵庇佑。想来,真要的东西,阿弥陀佛也给不了。在物价飞涨之际,谁能给你加薪,何来民主,看看这辈子能不能有机会参与选一回国家领导人,少说几句了,就这点言论自由了。

1. Struts 2 标签库以 OGNL 表达式为基础,对集合、对象的访问功能更强了。Struts 2 的标签用统一的前缀,一般为 "s",不再像 Struts1 那样分 <html:.../>、<bean:.../>、<logic:.../> 等多个命名空间的标签。如果在 JSP 2.0 之前用过 JSTL,也就知道什么是 OGNL 表达式的。

2. Struts2 提供了很多 Struts1 标签没有的东西,如日历、树型控件、Tab页等;同时可借助 DWR,有标签支持 Ajax,除此还提供了主题、模板,还允许在页面中使用自定义组件。Struts2 标签都定义在 URI 为 "/struts-tags" 的命名空间下,Struts2 的标签库功能很强大,使用起来却更简单。 阅读全文 >>

Unmi 的 Struts2 学习笔记(七)

小时候,大人们的谆谆教诲:做人要诚实。并真以此为做人原则。长大后才知道何谓社会。譬如530,再如艳照门,风声乍起之时,有人辟谣;直东窗事发后,道貌岸然者有之、恬不知耻者亦有之。原本成功就不属于规矩之人。纵观,无玄武门之血腥,何来一代宗皇;老毛若不有理而造反,一味守规矩,或为一介书匠耳。雅各一碗红豆汤便谋得以扫的长子权,再行骗去亚伯拉罕的祝福,并顺理成章让耶和华与他同在,可见上帝之“贤明”?。高等教育中有一句,顺利的是骗子,倒霉的是傻子,我是?不还有企业家的原罪吗?有时竟被社会所放任?

1. 前面讲的自定义类型转换器是基于 OGNL 的 DefaultTypeConverter 类并实现 convertValue() 方法,两个转换方向的逻辑都写在这一个方法中。而 Struts 2 为我们提供了一个 DefaultTypeConverter 的抽象子类 StrutsTypeConverter 来继承,并实现其中两个抽象方法 convertFromString() 和 convertToString(),这要简单易懂。对比 Struts 1 的转换器是要实现 org.apache.commons.beanutils.Converter 接口,以及它的 convert() 方法的。 阅读全文 >>

任务列表分派给多个线程的策略及方法(含完整代码和演示)

多线程下载由来已久,如 FlashGet、NetAnts 等工具,它们都是依懒于 HTTP 协议的支持(Range 字段指定请求内容范围),首先能读取出请求内容 (即欲下载的文件) 的大小,划分出若干区块,把区块分段分发给每个线程去下载,线程从本段起始处下载数据及至段尾,多个线程下载的内容最终会写入到同一个文件中。

只研究有用的,工作中的需求:要把多个任务分派给多个线程去执行,这其中就会有一个任务列表指派到线程的策略思考:已知:1. 一个待执行的任务列表,2. 指定要启动的线程数;问题是:每个线程实际要执行哪些任务。

策略是:任务列表连续按线程数分段,先保证每线程平均能分配到的任务数,余下的任务从前至后依次附加到线程中--只是数量上,实际每个线程执行的任务都还是连续的。如果出现那种僧多(线程) 粥(任务) 少的情况,实际启动的线程数就等于任务数,一挑一。这里只实现了每个线程各扫自家门前雪,动作快的完成后眼见别的线程再累都是爱莫能助。 阅读全文 >>

JAVA程序启动单一实例妙招[转]

每日E读,间隔几天,显的每日E读不每了,新闻过后,精彩继续!

今儿,想起来昨儿,解决的一问题,贴出来大家学习下,由于工作需要,学习,哈哈~!

手头的一个任务,是个java的SWT做的桌面应用程序,有一需求是,程序只能启动一个实例,二次启动会提示启动失败!网上转了一大圈几天也没找到比较理想的解决方法,在CSND等专业程序员网站上查找过,也没有找到!我正要放弃的时候,哈哈,被我找到了!

找了一写方案,总结起来就是,系统单一实例,就是查看共用资源,如果被占用,说明已经启动!有人说用单例模式,那是没有作用的!

网上找到的几种解决方案: 阅读全文 >>

SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序

我们有些程序会想要托盘处显示图标,最小化到系统栏;关闭按钮不关闭程序,也是最小化到系统栏;点击托盘图标激活窗口,通过托盘图标的弹出菜单来退出程序。

本段代码就是要完成这样的功能,是 SWT  来实现的。

直接代码给出,代码中有较详细的注释,说明了本程序的功能及实现。文中的任务栏和系统栏应该知道是指哪一段吧,微软就是这么定义的,用 spyxx 的 findwindow 窥探一下就知道了。 阅读全文 >>

JSPWeaver消灭JSP开发中的“一回生”[转]

之前整一星期忙得不可开交,关于技术已无暇顾及,这个星期总算有朝向正常化的迹象了。回到网络上多紧跟着技术变化的步伐,拣自认为好的东西摘记下来。

原文:http://www.infoq.com/cn/news/2008/02/JSPWeaver10

作者 Charles Humble译者 李剑 发布于 2008年2月25日 上午4时46分

社区 Java
主题 动态语言, 企业架构

ZeroTurnaround的JSPWeaver是一个实时JSP解释器,它旨在消除因为服务器从JSP标记中创建和编译后台servlet而造成的“一回生(译者注:即第一个访问Web应用的JSP页面的人,响应时间会比别人长)”。 阅读全文 >>

Unmi 的 Struts2 学习笔记(六)

米洗毕,水适量,盖合上,心摇摆,总觉水多了一分或是少了几点,于是重又加上或倒出少许,其实这丁点份量完全无碍煮出香喷喷的饭来。及至将熟之际,亦有犹豫,心中默数至少10,如再有不定辄至20,掐火,20对最终质量来说或有所损。

1. Struts2 的 Action 中可直接用属性来封装请求参数和处理结果,此谓之属性驱动。也可以像 Struts1 那样使用专门的 ActionForm 来处理请求参数和结果,只不过 Struts2 用的是一个更单纯的 POJO,这就做模型驱动;此时的 Action 需要实现 ModelDriven 接口,并实现其 getModel() 方法将 Action 与对应 Model 相关联。

2. 例子说明采用模型驱动的 Action (UserBean 是一个普通 JavaBean,其中定义了 username 和 password 两个属性): 阅读全文 >>

在仅实现到 Servlet 2.3/JSP 1.2 规范、JDK为1.4 的容器中用 Struts 2 会有什么问题?

Struts  的官方网站 http://struts.apache.org/2.0.11/index.html 列出了 Struts 2 的平台要求有三:

· Servlet API 2.4

· JSP API 2.0

· Java 5

但如果坚持要用 Java 4 也行,Struts 2 在 j4 目录下提供有用 retrotranslator 转换过的 struts2-core-j4-2.x.x.jar 和 xwork-j4-2.x.x 可用。

就是说换两个包可以 让 Struts 2 用 Java 4 环境中,但是未提及能不能用于 Servlet API 2.3/JSP API 1.2 的环境。 阅读全文 >>

Unmi 的 Struts2 学习笔记(五)

常有这样的梦:不知何来一本似乎是无字天书,而其中的字句却是慢慢地、渐显可辨。同时现实中的自己完全能察觉这是一个梦,极怕即刻醒来,想多记取那些天外之语。但总不能如愿,醒来时还留有某些字句痕迹,再过后就全然忘却。仿佛进入的是一个太虚幻境。

1. 动态 Action:<action ../> 元素的一个前所未有的特性是,name 属性可以用通配符,class 和 method 属性中可以用 name 中的匹配参数,{0}/{1} 的形式。举两个例子说明:
    ① <action name="*Action" class="com.unmi.LoginRegistAction" method="{1}">
         URL 是 registAction.action 时,会执行 LoginRegistAction 类实例的 regist() 方法
    ② <action name="*_*" class="actions.{1}Action" method="{2}">
         URL 是 Book_save.action 时,会执行 actions.BookAction 类实例的 save() 方法 阅读全文 >>

Unmi 的 Struts2 学习笔记(四)

在这个陌生的城市里,的确承受着巨大的压力。房东的驱赶与无理的加价,想置个家电须顾及到搬迁。也开始学会了算计着过活,两块五与三块的公交,宁愿等待与拥挤,就连省下一顿饭钱都能暗自庆幸。周末了,老老实实呆在家里吧!

1. 按这个顺序加载 Struts2 的常量,struts-default.xml、struts-plugin.xml、struts.xml、web.xml;后加载的会覆盖前面的同名常量。强烈不推荐在 web.xml 中配置 Struts2 常量。

2. Struts1 中有一种 Action 类型是 ForwardAction,而在 Struts2 中相应的配置方式是 <action name="Showcase"><result>/showcase.jsp</result></action>,Showcase.action 直接映射到 /showcase.jsp。 阅读全文 >>