我用 MyEclipse 建了一个 Web 项目,配置了能支持 Struts2。在验证标签应用时,把 《Struts2权威指南--基于WebWork核心的MVC开发》一书的例子 10.3 controlTag 中的 s-if.jsp 拷入当前应用。该 jsp 文件的内容是:想像一下我访问它时得到了什么样的结果?1<%@ page contentType="text/html; charset=GBK" language="java"%> 2<%@taglib prefix="s" uri="/struts-tags"%> 3<html> 4 <head> 5 <title>s:if标签测试</title> 6 </head> 7 <body> 8 <s:set name="age" value="29"/> 9 <s:if test="${age > 60}"> 10 老年人 11 </s:if> 12 <s:elseif test="${age > 35}"> 13 中年人 14 </s:elseif> 15 <s:elseif test="${age > 15}" id="wawa"> 16 青年人 17 </s:elseif> 18 <s:else> 19 少年 20 </s:else> 21 </body> 22</html>
然后把该应用 TestStruts2 部署到 Tomcat 5.0.28 下,启动 Tomcat,地址栏输入 http://localhost:8080/TestStruts2/s-if.jsp,确定,执行结果让我傻眼了,任凭我百般刷新,也都是赫然显示着:
Read More
吾同人数进寺庙,却从未点过一柱香。概因精神世界里终无所寄托。既不为生儿还是女而筹算,也无须因落下亏心事要请得神灵庇佑。想来,真要的东西,阿弥陀佛也给不了。在物价飞涨之际,谁能给你加薪,何来民主,看看这辈子能不能有机会参与选一回国家领导人,少说几句了,就这点言论自由了。
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 的标签库功能很强大,使用起来却更简单。 Read More
真要看如何安装可直接跳到第三节,前两节权当胡诌。
此第一节与本篇旨意确有偏离,以免混淆视听,故此默认时隐去,有兴趣者可点击本行来展开阅读此节
一、
先前装过不少的 Linux 发行版,记得最早的还是 RedHat 5.1,那感觉真是非专业人员不可碰及,其实那时不过刚学步,当然要吃苦头的,一不小心便让硬盘数据倏忽全没了。
现在 Linux 慢慢也走向平民化了,尤其是 Ubuntu Linux。与 Ubuntu 的机缘还是前年大约八月份的时候,有个同事还是从美国带回来的一张 Ubuntu 6.06 LTS 的 Live CD。当晚在自己机器上一启动,发现那傻不拉叽又愣黄的界面,实在是无法与 RedHat 和 Suse 相媲美,便把它沉之箱底。 Read More
·替换已部署的 Job
Quartz 提供了对已部署 Job 进行修改的灵活性。它是通过允许用修改后的 JobDetail 替换已有的 JobDetail 来支持这一特性的。为展未这一例子,让我们更新代码 12.4 中的 CheckEmailJob 类。 代码 12.4 是硬编码了邮件属性值到 Job 类中的。更好的做法是传入那些属性,如此则可以随意的改变它们; 那让我们改动 CheckEmailJob 来做到这一点。代码 12.7 显示的是那个 Job 的更新后的版本。
Read More
二. 与 Job 一同工作
本节为使用 Quartz 的 Job 提供了一些例子。
·创建一个新的 Job 类
创建一个新的 Job 类很简单。仅需创建一个类,让它实现 org.quartz.Job 接口即可。这个接口需要你实现 execute() 方法,它会在 Scheduler 决定 Job 要执行时被调用。
代码 12.4 演示了一个简单的 Job,它会为某个用户检查邮件服务器上是否有新的邮件。当 Scheduler 执行这个 Job 时,方法 execute() 被调用,然后其中的代码就会连接到邮件服务器并获取任何邮件消息。这一 Job 只简单的打印邮件是谁发的和邮件的主题。 Read More
第十二章. Quartz Cookbook
本章的目的是为在构建 Quartz 应用时常遇到的情形提供一系列的例子和解决方案。本章也可作为对本书剩余部分的一个参考和补充。
一. 与 Scheduler 一同工作
本节提供了使用 Quartz Scheduler 管理功能的几个例子。
·创建和启动 Scheduler
你能通过几种方式来启动 Quartz Scheduler,但是最简单的方式是使用两种 SchedulerFactory 实现中的一个。特别的,org.quartz.impl.stdSchedulerFactory 使用很简单,要执行对 Scheduler 的所有设置工作只需要调用 getDefaultScheduler() 这一静态方法即可,如代码 12.1 所演示的那般。 Read More
七. Cron 表达式 Cookbook
此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式,但下面的应该为满足你的业务需求提供了足够的例子。
·分钟的 Cron 表达式表 5.1. 包括了分钟频度的任务计划 Cron 表达式 用法 表达式 每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 0 * 17 * * ? 每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 0 0/5 23 * * ? 每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 0 0/5 15,18 * * ? 每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 0 0-5 5 * * ?
Read More- VMware 中安装了 Linux 后,又给这个虚拟机增加一个硬盘,假设选的类型是 SCSI, 进到虚拟机系统中应如何加载呢?
其实这后 Linux 新加了一个物理硬盘是一回事,做法如下:
在服务器上把硬盘接好,启动linux,以root登陆。
比如我新加一块SCSI硬盘,需要将其分成三个区:
#fdisk /dev/sdb
进入fdisk模式:
Command (m for help):p //查看新硬盘的分区
Command (m for help):n //创建新分区 Read More
小时候,大人们的谆谆教诲:做人要诚实。并真以此为做人原则。长大后才知道何谓社会。譬如530,再如艳照门,风声乍起之时,有人辟谣;直东窗事发后,道貌岸然者有之、恬不知耻者亦有之。原本成功就不属于规矩之人。纵观,无玄武门之血腥,何来一代宗皇;老毛若不有理而造反,一味守规矩,或为一介书匠耳。雅各一碗红豆汤便谋得以扫的长子权,再行骗去亚伯拉罕的祝福,并顺理成章让耶和华与他同在,可见上帝之“贤明”?。高等教育中有一句,顺利的是骗子,倒霉的是傻子,我是?不还有企业家的原罪吗?有时竟被社会所放任?
1. 前面讲的自定义类型转换器是基于 OGNL 的 DefaultTypeConverter 类并实现 convertValue() 方法,两个转换方向的逻辑都写在这一个方法中。而 Struts 2 为我们提供了一个 DefaultTypeConverter 的抽象子类 StrutsTypeConverter 来继承,并实现其中两个抽象方法 convertFromString() 和 convertToString(),这要简单易懂。对比 Struts 1 的转换器是要实现 org.apache.commons.beanutils.Converter 接口,以及它的 convert() 方法的。 Read More
四. 为 CronTrigger 使用起迄日期
Cron 表达式是用来决定一个 Trigger 被触发执行一个 Job 的日期和次数。当你创建一个 CronTrigger 实例,假如没为它指定一个开始时间,这个 Trigger 当然就会假定是在依赖于 Cron 表达式尽早的被触发。例如,如果你用这个表达式
0 * 14-20 * * ?
这个 Trigger 会在每天的从下午 2 点到下午的 7:59 间的每分钟触发一次。一旦你运行了这个表达式的 CronTrigger,假如当前是下午 2 点后(不能超过 7:59 PM--译者注),它将会立即触发。它会在每天无限期的被触发。 Read More