ssh之struts第二篇:struts的plugIn接口扩展

来源:互联网 发布:我的世界登入器源码 编辑:程序博客网 时间:2024/05/16 00:46

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插件,敬请朋友们支持和关注....谢谢..晚安