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设置的参数了。
Struts将ActionServlet的引用和ModuleConfig参数传递给init()方法。ActionServlet使的init()方法中可以将数据保存到ServletContext中。ActionServlet还可以使你能够访问更多的J2EE组件如java sources、message队列等。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子类TimeTrackerPlugin。TimeTrackerPlugi将TimeTracker保存在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后将调用此Servlet的init()方法。比较而言,使用plug-in有更多的优势:
1. 一般情况下Struts应用程序设置好web.xml后,在开发过程中不许要改动他的内容。在web.xml中增加servlet意味着增加了一个维护对象。
2. plug-in接口提供了访问struts应用程序特有的信息的能力。
plug-in的声明周期跟ActionSerlvet的生命周期一致。他可以保证你的struts应用程序需要的信息可用。
分享到:
相关推荐
- `<plug-in>`:配置插件支持。 这些元素的详细配置方式和应用场景将在后续的文章中进一步探讨。 #### 五、总结 通过本文的详细介绍,我们可以看出`struts-config.xml`文件在Struts框架中的核心地位。正确配置...
8. **Plug-in**:插件机制,使得开发者能够扩展Struts的功能,添加新的控制器或拦截器。 9. **配置文件**:如struts-config.xml,是Struts的核心配置文件,定义了Action、ActionMapping、ActionForm和Interceptor等...
9. **Plug-in架构**:Struts 1.2.0支持插件,允许开发者添加自定义功能或扩展框架功能。 10. **异常处理**:通过配置文件中的全局异常处理,可以统一处理应用程序中出现的异常。 11. **JSP标签库**:Struts提供了...
7. **`<plug-in>`**: 插件元素,允许扩展Struts的功能。插件可以自定义Action的生命周期,提供额外的验证、拦截器等功能。 ### 子元素 1. **`<icon>`**: 提供图形化的表示,可以是小型图标`<small-icon>`(16x...
7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`<plug-in>`元素下的`<set-property>`可以设置插件的属性。 8. **Exception处理**:`<global-exceptions>`允许...
8. <plug-in>元素:plug-in元素用于配置Struts框架的插件。Struts框架允许通过插件的形式来扩展其功能,开发者可以编写自己的插件或者使用第三方提供的插件来增强框架的性能和扩展功能。通过在struts-config.xml中...
`plug-in`元素用于配置Struts插件,这些插件可以扩展框架的功能。每个插件可以有自己的配置,包括`class`属性指定插件的主类,以及其他相关属性。 理解并熟练配置`struts-config.xml`对于开发和维护Struts应用至关...
* 插件配置(<plug-in />):用于配置struts应用程序的插件,例如文件上传插件。 二、struts-config.xml的子元素 * 图标配置():用于配置struts应用程序的图标,例如小图标和大图标。 * 显示名称配置(<display-...
- **Plug-in插件**:自定义版本可能包含自定义插件,以扩展Struts的功能。 2. **工具集成**: - **IDE集成**:开发者可能优化了与Eclipse、IntelliJ IDEA等IDE的集成,提高了开发效率。 - **构建工具**:使用...
- **plug-in**: 子元素,用于添加自定义插件。 6. **<message-resources>**: - **param**: 子元素,用于指定消息资源的参数,如资源文件的名称。 通过理解并熟练配置 `struts-config.xml`,开发者可以精确控制 ...
插件配置是通过 `<plug-in>` 元素实现的,该元素可以包含多个插件配置。插件配置中可以设置插件的类类型、属性等信息。 例如: ```xml <plug-in className="com.example.MyPlugin"> <set-property property=...
其中,`struts-core-1.3.8.jar`是Struts框架的主要组件,它包括了Action、Form Bean、Plug-in、Request Processor等核心类。其他JAR文件如`commons-logging.jar`、`struts-taglib-1.3.8.jar`、`struts-tiles-1.3.8....
5. **Plug-in**: 插件机制允许扩展Struts2的功能,如Tiles插件用于布局管理,Struts2-dojo-plugin提供与Dojo库的集成。 6. **Struts Prepare and Execute Filter**: Struts2框架的核心过滤器,负责拦截HTTP请求并...
plug-in元素用于配置Struts插件,可以扩展Struts的功能。 掌握Struts.xml配置文件的每一个元素及其属性,可以帮助开发者精确控制应用程序的行为,提高代码的可维护性和可扩展性。在实际开发过程中,应根据项目需求...
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/> </plug-in> ``` - 上述配置...
7. `<plug-in>`元素: 插件配置,允许扩展Struts功能,例如Struts Tiles。 通过以上配置,开发者可以灵活地设置Struts应用的行为,实现业务逻辑和视图的分离,提高代码的可维护性和复用性。在实际开发中,根据具体...
12. **Plug-in架构**:Struts1支持插件式开发,开发者可以编写自定义的拦截器(Interceptor)和生命周期管理器,增强框架的功能。 13. **性能优化**:Struts1.3.8在性能上做了优化,例如缓存ActionMapping,减少...
- `<plug-in>`元素允许集成第三方插件,增强Struts功能。 - `<global-forwards>`和`<global-exceptions>`分别定义全局的转发和异常处理策略。 理解并熟练运用Struts配置文件是开发基于Struts框架的应用的基础,它...
8. `<plug-in>`子元素: 插件配置,允许扩展Struts的行为。可以定义一个或多个插件,每个插件可能包含自定义的监听器、拦截器或过滤器。 此外,还有一些辅助的子元素: - `<icon>`: 提供图标资源,通常用于Web...