关于我们
About Us
网站建设
Site Design
售后服务
Call Center
经典案例
Projects
技术资料
Source
公司产品
Products
留言板
FeedBack
网站维护
Maintenance
 
 首页>> 技术资料>>JSP  
关于struts-config.xml中元素的问题

创建一个实现了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应用程序需要的信息可用。

 
 
北京四方互动网络技术有限公司
© 版权所有 2001-2005
地址:北京市海淀区知春路豪景佳苑3号楼401室
邮编:100086 公司地图
业务专线:010-62568654 62106102
传  真:010-82611617
公司总机:62106100/1/2/3
售后服务:分机808、881、812