`
kalogen
  • 浏览: 880503 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts插件 plug-in

    博客分类:
  • Java
阅读更多

n   问题

有时候你需要在应用程序启动时装载一些数据到程序上下文中或执行某些操作。

n   解决方法

创建一个实现了org.apache.struts.action.PlugIn接口的类文件并在struts-config.xml中设置plug-in元素。以下代码片段显示了一个plug-in生命声明和一个自定义的set-property子元素:

<plug-in className="com.oreilly.strutsckbk.CustomPlugin" >

  <set-property property="customData"

                   value="Hello from the plugin"/>

</plug-in>

n   细节讨论:

Struts提供一个 PlugIn接口能使你在启动应用程序时为你提供自定义的操作。其源代码如下:

package org.apache.struts.action;

 

import javax.servlet.ServletException;

import org.apache.struts.config.ModuleConfig;

 

public interface PlugIn {

    void destroy();

    void init(ActionServlet servlet, ModuleConfig config)

        throws ServletException;

}

要实现一个plug-in,你只需要实现这个接口并在struts-config.xml文件的中声明plug-in元素。子类必须实现方法destroy()init()init()ActionServlet启动时实例化plug-in过程中执行,当ActionServlet结束时执行destroy(),一般情况下是应用程序关闭。通过在plug-in元素中设置set-property元素,可以向PlugIn类传递参数。

所有set-property元素都在init()方法执行之前被执行,这样就可以在init()方法中使用这些由set-property设置的参数了。

StrutsActionServlet的引用和ModuleConfig参数传递给init()方法。ActionServlet使的init()方法中可以将数据保存到ServletContext中。ActionServlet还可以使你能够访问更多的J2EE组件如java sourcesmessage队列等。ModuleConfig可以让你访问当前的模块配置信息。

n   举例说明:

你需要定义一个plug-in记录应用程序何时运行的及运行了多久。

TimeTracker.java:

package com.yourcompany.struts.plugin;

 

import java.util.Date;

 

public class TimeTracker {

 

  private long startUpTimeMillis;

  private Date startedOn;

 

  public TimeTracker( ) {

     startUpTimeMillis = System.currentTimeMillis( );

     startedOn = new Date( );

   }

 

  public long getUptime( ) {

    return System.currentTimeMillis( ) - startUpTimeMillis;

  }

 

  public Date getStartedOn( ) {

    return startedOn;

  }

}

创建一个PlugIn子类TimeTrackerPluginTimeTrackerPlugiTimeTracker保存在ServletContext中,键名由由plug-in元素的set-propery子元素指定:

TimeTrackerPlugin.java:

package com.yourcompany.struts.plugin;

 

import javax.servlet.ServletException;

import org.apache.struts.action.ActionServlet;

import org.apache.struts.action.PlugIn;

import org.apache.struts.config.ModuleConfig;

 

public class TimeTrackerPlugin implements PlugIn {

 

    private String contextKey;

  

   public void setContextKey(String key) {

       this.contextKey = key;

   }

  

   public void init(ActionServlet servlet, ModuleConfig conf)

         throws ServletException {

      servlet.getServletContext( ).setAttribute(contextKey, new TimeTracker( ));

   }

 

   public void destroy( ) {

    }

}

struts-config.xml:

  <plug-in className="com.yourcompany.struts.plugin.TimeTrackerPlugin">

    <set-property property="contextKey" value="timeTracker"/>

  </plug-in>

 

你可以使用如下的JSP片段访问TimTracker,并显示关于应用程序运行时间的信息。

 

n   你也可以在web.xml中配置一个Servlet实现plug-in的功能将load-on-startup值设置为一个较低的值如1。他将在应用程序启动是自动加载并执行。容器在实例化Servlet后将调用此Servletinit()方法。比较而言,使用plug-in有更多的优势:

1.  一般情况下Struts应用程序设置好web.xml后,在开发过程中不许要改动他的内容。在web.xml中增加servlet意味着增加了一个维护对象。

2.  plug-in接口提供了访问struts应用程序特有的信息的能力。

plug-in的声明周期跟ActionSerlvet的生命周期一致。他可以保证你的struts应用程序需要的信息可用。

分享到:
评论

相关推荐

    struts-2.3.31-all.zip

    4. **Plug-in插件系统**:Struts2拥有强大的插件系统,可以方便地集成其他库,如Spring、Hibernate等,实现依赖注入和持久化操作。 5. **注解支持**:Struts2支持使用注解进行配置,减少了XML配置文件的使用,提高...

    struts-2.3.32-all

    10. **Plug-in机制**: Struts 2支持插件扩展,允许开发者添加自定义功能,如表单验证、数据类型转换等。 11. **OGNL (Object-Graph Navigation Language)**: Struts 2默认使用OGNL作为表达式语言,用于在Action和...

    struts-core-1.3.10.jar.zip

    8. **Plug-in**:插件机制,使得开发者能够扩展Struts的功能,添加新的控制器或拦截器。 9. **配置文件**:如struts-config.xml,是Struts的核心配置文件,定义了Action、ActionMapping、ActionForm和Interceptor等...

    struts-2.5.20-all.zip

    6. **Plug-in机制**:Struts2的插件系统允许扩展框架功能,例如,struts2-convention-plugin自动映射Action和结果页面,struts2-dojo-plugin则提供 dojo库的支持。 **Struts2的安全问题与应对策略** Struts2的某些...

    Struts框架中struts-config.xml文件配置小结

    - `&lt;plug-in&gt;`:配置插件支持。 这些元素的详细配置方式和应用场景将在后续的文章中进一步探讨。 #### 五、总结 通过本文的详细介绍,我们可以看出`struts-config.xml`文件在Struts框架中的核心地位。正确配置...

    struts-2.5.22-all.rar

    6. **Plug-in机制**:Struts 2支持插件扩展,开发者可以自定义插件来增强框架的功能,如 strut2-dojo-plugin 提供了与Dojo库的整合。 7. **Tiles**:Struts 2集成了Tiles框架,用于页面布局和组合。Tiles模板可以...

    struts-2.1.2-lib.zip

    6. **Plug-in(插件)**:Struts 2有丰富的插件体系,可以扩展框架功能,如Ajax支持、上传下载、日期时间处理等。 7. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts 2中用于表达式语言,它用于在...

    Struts2-2.5.13最新jar下载

    5. **Plug-in架构**:Struts2的插件架构允许开发者轻松扩展框架功能,例如添加新的拦截器、结果类型或者整合其他框架。 6. **Tiles**:Struts2可以与Tiles框架集成,用于创建复杂的页面布局和模板。 7. **OGNL...

    struts-2.3.24-all

    10. **Plug-in Architecture**:Struts 2的插件架构允许开发者轻松地扩展框架功能,如添加新的拦截器、结果类型或标签库。 在"struts-2.3.24-all"的压缩包中,可能包含以下组件: - Struts 2的核心库(struts2-core...

    Struts JDO plug-in-开源

    Struts JDO 插件是开源社区为Struts框架提供的一种扩展,它的主要目标是简化在Struts应用程序中对Java Data Objects (JDO) 的使用。JDO 是一种标准的API,它允许开发者以一种与数据库无关的方式处理数据持久化,从而...

    struts2-core-2.3.7源码

    7. **Plug-in架构**: Struts2的插件机制允许扩展其功能,如添加新的拦截器、结果类型等。 在`struts2-core-2.3.7`版本中,我们可以看到以下几个关键组件: 1. **StrutsPrepareAndExecuteFilter**: 这是Struts2的...

    jakarta-struts-1.2.0-lib

    9. **Plug-in架构**:Struts 1.2.0支持插件,允许开发者添加自定义功能或扩展框架功能。 10. **异常处理**:通过配置文件中的全局异常处理,可以统一处理应用程序中出现的异常。 11. **JSP标签库**:Struts提供了...

    struts-1.3.10-lib.rar

    9. **Plug-in架构**:Struts允许开发者通过插件扩展框架功能,增强了框架的可扩展性。 10. **生命周期管理**:Struts框架自动管理ActionForm对象的生命周期,可以设置session范围或request范围,以保持状态。 11. ...

    struts-2.3.24-all.zip

    - **Plug-in架构**:Struts2支持可扩展的插件系统,允许开发者添加自定义功能和集成其他框架。 - **Tiles**:Struts2可以与Tiles框架集成,方便创建和管理复杂的页面布局。 - **主题和皮肤**:Struts2支持多种主题...

    struts-2.3.14-docs.zip

    5. **Plug-in架构**:Struts2具有高度可扩展性,通过插件机制可以添加新的功能或扩展现有功能,如Struts2-dojo-plugin提供了与Dojo库的集成。 6. **Tiles**:Struts2可以与Tiles框架结合,提供模板化的页面布局,...

    struts-2.2.3-src

    5. **Plug-in Architecture**:Struts2的插件架构使得扩展非常方便,如添加新的拦截器、结果类型或自定义标签库等。开发者可以编写自己的插件以增强框架功能。 6. **FilterDispatcher**:作为Struts2的前端控制器,...

    struts-config.xml

    7. **`&lt;plug-in&gt;`**: 插件元素,允许扩展Struts的功能。插件可以自定义Action的生命周期,提供额外的验证、拦截器等功能。 ### 子元素 1. **`&lt;icon&gt;`**: 提供图形化的表示,可以是小型图标`&lt;small-icon&gt;`(16x...

    Struts1.3和config配置详解

    7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`&lt;plug-in&gt;`元素下的`&lt;set-property&gt;`可以设置插件的属性。 8. **Exception处理**:`&lt;global-exceptions&gt;`允许...

    struts-core-2.1.8.1.z02.zip 共两个包,Struts2核心包的源码

    8. **Plug-in(插件)**:Struts2的可扩展性体现在插件系统上,通过插件可以轻松集成其他功能,如Spring、Hibernate等。 9. **Struts2配置**:包括struts.xml和struts.properties等配置文件,定义了Action、...

Global site tag (gtag.js) - Google Analytics