struts的PlugIn有着比较广泛的应用,比如应用系统启动时的初始化工作、一次性任务、定时器的初始化以及系统停止后资源的释放等等...另外struts也提供了2个扩展功能的PlugIn,分别是tiles和Validator的PlugIn....后续会详细介绍...
要使用struts的PlugIn,首先需要实现org.apache.struts.action.PlugIn接口,该接口提供了init()和destroy()方法,init()方法在应用启动的时候被调用,destroy()在应用终止调用..除此之外,它还允许定义和传递参数,但参数必须作为属性提供setter方法...
下面demo实现功能为:定时器功能,在每天的固定时刻执行相关业务,初始化工作由PlugIn来实现,参数为日期格式....
demo环境依然为:struts1.2+Myeclipse5.5+jdk1.5+tomcat5.5
1.新建PlugInTest类,并实现PlugIn接口
public class PlugInTest implements PlugIn{
//日期类型
private String dateType;
//每24小时运行一次
public static long SLEEP_TIME = 86400000;
private Timer timer;
public void init(ActionServlet arg0, ModuleConfig arg1) throws ServletException {
timer = new Timer();
HelpTest ht=new HelpTest();
SimpleDateFormat smd= new SimpleDateFormat(this.getDateType());
Date startTime=Timestamp.valueOf(smd.format(new Date())+" 01:30:00.000"); //每天凌晨1:30分调用业务实现
timer.schedule(ht,startTime,SLEEP_TIME);
}
public void destroy() {
timer.cancel();
}
public String getDateType() {
return dateType;
}
public void setDateType(String dateType) {
this.dateType = dateType;
}
}
2.定义一帮助类,模拟固定时刻时的业务实现
public class HelpTest extends TimerTask{
@Override
public void run() {
System.out.println("我准时开工了....");
}
}
3.在struts-config.xml中配置
<plug-in className="com.gdcn.ssh.plugIn.PlugInTest">
<set-property property="dateType" value="yyyy-MM-dd"/>
</plug-in>
操作完毕,效果如下:
1.如果当前时间在当日的1:30分之后了,应用系统启动时会初始化定时器,打印出:我准时开工了....
2.如果在当日的凌晨零点到1:30分之间,应用系统启动时会初始化定时器,但不会调用业务方法,直到1:30分才打印:我准时开工了....
后话:
朋友们应该注意到,虽然上面操作比较简单,但实际应用却十分广泛,特别是plugIn的扩展及定时器的使用,为我们以后的工作提供了一种比较好的选择...
注:后续会拿出专门的博篇来介绍:struts提供的2个扩展PlugIn,即:tiles和Validator的PlugIn 以及spring提供的struts插件,敬请朋友们支持和关注....谢谢..晚安