posts - 70,comments - 408,trackbacks - 0

Struts框架的优势在于允许开发人员根据实际需求来扩展框架,定制客户化的功能.不过作为一个优秀的软件框架是应该具备可扩展的功能的.在Struts框架中提供了许多可扩展之处,不妨将其称为扩展点(Extension Point),以下是Struts的扩展点:

1)     一般性扩展点:Struts插件PlugIn,扩展Struts配置类.

2)     控制器扩展点:扩展ActionServlet类,RequestProcessor类和Action类.

3)     视图的扩展点:扩展Struts客户化标签.

4)     模型的扩展点:扩展SessionContainer类和ApplicationContainer.

Struts1.1框架提供了动态插入和加载组件的功能,这种组件被称为Struts插件,实际

上就是一个JAVA类,它在Struts应用启动的时候被初始化,在应用关闭的时候被销毁.任何作为插件的JAVA类逗应该实现org.apache.struts.action.PlugIn接口,主要包括两个方法.init()方法.的参数是ActionServlet和ApplicationConfig还又一个就是destroy()方法.注意的是要用implements关键字实现PlugIn接口.除了创建插件类外,还需要在Struts配置文件中配置插件.在启动的时候会启动将根据相关的配置信息来初始化插件.与插件对应的配置元素为<plug-in>元素包含一个<set-property>子元素,它定义了插件的属性,与之对应的是在具体的实现了PlugIn接口的类中定义的成员变量的get/set方法.Struts框架加载插件的时候会调用插件类的set()方法,把<set-property>子元素设置的属性传给PlugIn实例的成员变量.根据Struts配置文件的DTD定义,在Struts配置文件中,<pulg-in>元素必须位于其他配置元素的后面,此外,如果在配置文件中配置了多个插件,框架将按照他们的先后顺序来依次初始化.

扩展Struts的配置类是在Struts应用启动的时候,配置文件中所有的信息都会被读到内存中,这些信息在org.apache.struts.config包相应的配置类的实例中.这个一般不推荐使用,除非个别情况.

控制器扩展点在Struts1.1版本以前会被使用,当初都是需要扩展ActionServlet类,来实现各种定制的功能.在Struts1.1版本开始扩展ActionServlet已经显的不是必须的了,这也也不推荐使用.如果要扩展RequestProcessor类,应该在配置文件中通过<controller>元素对自定义的类进行配置.在自定义的RequestProcessor类中,可以覆盖processPreprocess()方法来执行特定的逻辑.如果在某些条件下希望终止处理请求,只需让processPreprocess()放回false即可.在这种情况下,仍需要以编程的方法来决定如何转发或者重定向请求.要注意的地方是如果方法返回false,那么应该在方法内部决定如何转发请求.而且Struts还可以扩展视图和模型组件,不过这些显的已经没什么必要了,除非是Struts的客户化标签不能满足项目的需求,可以考虑扩展视图组件.

扩展Action到是Struts框架中最频繁的扩展点,对于具体的Struts应用,可以先为应用创建一个扩展StrutsAction类的Action基类,在这个基类中定义应用中所有的Action的一些公共逻辑也就是通用的方法,这种处理方法可以提高代码的重用性,减少代码重复.

扩展Struts框架可以根据具体的项目,进行具体的处理.大家如果看过我的文章和之前写的文章希望能给予一些评价,希望大家能指出我的缺点和不足谢谢! (网友们的支持,是我继续写技术文章的动力!)

posted on 2005-10-27 13:39 我心依旧 阅读(1080) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: