`
sqe_james
  • 浏览: 264867 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Struts1.x PlugIn 接口扩展应用

阅读更多

Struts 1.x 提供一个新的 PlugIn 接口,可以动态增减 ActionServlet 的功能。如果需要在应用启动或关闭时完成某些操作,可以创建自己的 PlugIn 类。

 

1. 实现自己的 PlugIn

实现 PlugIn 接口必须实现如下两个方法。

  • void destroy();
  • void init(ActionServlet servlet,ModuleConfig config) throws ServletException;

应用启动时调用 init 方法,而应用关闭时则调用 destroy 方法。

e.g. SessionFactoryPlugIn 的实现类:

 

public class SessionFactoryPlugIn implements PlugIn  {   
  //Hibernate的配置文件   
  private String configFile;   
   //应用关闭时,销毁资源   
  public void destroy()   {   
       System.out.println("系统销毁SeesionFactory");   
     }   
  
   //应用启动时,完成SessionFactory的初始化   
  public void init(ActionServlet actionServlet,ModuleConfig config)
     throws ServletException   {   
        System.out.println("系统以 " + getConfigFile() + " 为配置文件初始化SessionFactory");   
    }   
       
     //获取PlugIn配置文件的方法   
   public String getConfigFile()   {   
           return configFile;   
     }   
  
     //负责加载PlugIn配置属性的方法   
   public void SetConfigFile(String configFile)   {   
           this.configFile = configFile;   
        }   
}
 

在上面的 PlugIn 中,并没有真正初始化 SessionFactory ,仅在控制台打印出字符串来标识创建动作。另外,还提供了configFile 属性的 setter getter 方法,这两个方法负责访问 PlugIn 元素的 configFile 属性。

 

2. struts-config.xml 文件的配置

   为了让 ActionServlet 知道要 挂上 这个 PlugIn ,您须如下设定:

<plug-in className="cn.janwer.xxxPlugIn">
    <set-property property="xxx" value="abcde"/>
</plugin>

Tiles、Validator 等都是利用这种方式来扩充 Struts 的功能。

 

3. 实践应用

在下面示例中,系统使用 Hibernate 作为持久层,在启动时创建 SessionFactory 实例,并将该 SessionFactory 存在 Application ,在应用关闭时销毁 SessionFactory

 

如下在启动时加载权限配置信息:

  public class SqePlugIn implements PlugIn {   
        public void init(ActionServlet servlet, ModuleConfig config)   
             throws ServletException   {   
         Cache cache = CacheFactory.getCache();   
   
         // 得到SessionFactory对象的实例,用于初始化Hibernate   
         SessionFactory sf = HibernateUtil.getSessionFactory();   
         try  {   
             // 开始一个新的事物   
             sf.getCurrentSession().beginTransaction();   
             // 得到操作用户角色的DAO   
             RoleDAO dao = DAOFactory.getDao(RoleDAO.class);   
             // 得到所有的用户角色对象   
             List<Role> roles = dao.findAll();   
             // 缓存所有的用户角色信息   
             for (Role role : roles)   {   
                 cache.put(role.getName(), role);   
             }   
             // 关闭当前的事物   
             sf.getCurrentSession().getTransaction().commit();   
         }    
         catch (Throwable ex)   {   
             ex.printStackTrace();   
             sf.getCurrentSession().getTransaction().rollback();   
         }   
     }   
   
     /**  
      * 销毁SessionFactory的实例。  
      */  
     public void destroy()   {   
         HibernateUtil.shutdown();   
     }   
 }
 
下面是配置信息:
 <!-- 加载权限校验配置信息类 -->
<plug-in className="cn.janwer.struts.SqePlugIn"/>

如果您在某个 Action 中必须使用到 挂上 的资源,您可以由 ActionField 成员 servlet (ActionServlet 实例) 来取得 ServletContext ,并得到所须的资源,例如:
public ActionForward execute(ActionMapping mapping,
                              Actionform form,
                              HttpServletRequest request,
                              HttpServletResponse response)
                               throws Exception {
    .......
    ServletContext context = servlet.getServletContext();
    SomeService service =
         (SomeService) context.getAttribute("service");
     ......
}
 

分享到:
评论

相关推荐

    struts2.x所有包及配置文件

    这个压缩包"struts2.x所有包及配置文件"包含了Struts2框架的核心组件、扩展和配置文件,用于构建和管理Java web应用。 1. **核心组件**: - `struts2-core.jar`:这是Struts2框架的基础,包含了Action、Result、...

    Struts2.x整合工具开发包,需要的朋友下载过来学习

    Struts2.x是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它在Struts1的基础上进行了很多改进和增强,旨在提供更高效、更灵活的Web应用程序开发。Struts2.x的主要目标是简化开发过程,提高代码可...

    struts2.2.x 最小jar包

    1. **struts2-core.jar**:这是Struts2框架的基础,包含了Action、Result、Interceptor等核心类和接口。这个jar文件提供了请求处理、控制器调度和视图渲染的基本功能。 2. **xwork-core.jar**:Struts2是基于XWork...

    基于eclipse的struts2.x+hibernate3.x+spring3.x整合文档及实例源码

    5. **整合Struts2和Spring**:在Struts2的配置文件中,使用Spring插件(struts2-spring-plugin)的`&lt;spring:bean&gt;`标签引入Spring管理的bean。 6. **实例化Action**:在Struts2的Action配置中,通过Spring插件的`...

    struts用到的jar和struts源文件.rar

    Struts是Apache软件基金会下的一个开源项目,是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。...不过要注意,Struts 1.x已经较为老旧,现在更推荐使用Struts 2或Spring MVC等更新的框架。

    struts-2.2.1.1 jar文件

    1. **Struts2核心库**:这包含主要的框架类和接口,如`com.opensymphony.xwork2`和`org.apache.struts2`包,它们定义了Action、Result、Interceptor等关键概念。 2. **依赖的开源库**:Struts2依赖于许多开源库,如...

    Struts框架基础包

    6. **插件支持**:Struts支持多种插件,如`struts-plugin-x.x.x.jar`,这些插件可以扩展框架的功能,如集成其他框架如Hibernate或Spring。 7. **配置文件**:在使用Struts时,开发者需要编写`struts-config.xml`或`...

    struts1.0x源码

    - PlugIn在Struts启动时自动加载,可以通过实现`org.apache.struts.action.PlugIn`接口来创建自定义插件。 - 插件可以监听ActionServlet的生命周期事件,比如在初始化阶段进行配置加载,在销毁阶段进行资源释放。 ...

    struts2.1.8 struts2源码 Eclipse关联这个可以

    Struts2是一个非常著名的Java Web开发框架,由...通过理解和掌握这些知识点,开发者可以有效地使用Struts2.1.8构建Web应用,并能进行定制化开发和问题调试。结合Eclipse的源码关联,学习和工作效率将得到显著提升。

    传智播客 struts2 讲师黎活明

    若需要与其他框架集成,例如Spring,还需要相应的-plugin JAR文件,如struts2-spring-plugin-2.x.x.jar。 在Struts2中,框架的启动不同于Struts1,不是通过Servlet,而是通过Filter启动。核心过滤器是`...

    struts2 所需最少JAR

    8. **struts2-spring-plugin-x.x.x.jar**:如果你的应用使用Spring框架,这个插件可以帮助整合Struts2和Spring,实现依赖注入和事务管理。 9. **commons-logging-x.x.x.jar**:提供日志记录服务的抽象层,Struts2...

    struts验证器validator使用,以及自定义验证器

    本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和使用Eclipse进行编译。 **一、Struts验证器Validator的基本概念** Struts Validator是Struts框架提供...

    如何使用struts2的零配置插件convention

    要使用`Convetion`插件,首先需要将`struts-convention-plugin-x.x.x.jar`文件添加到项目的`WEB-INF/lib`目录下。然后,插件会自动扫描指定的包(默认是`action`, `actions`, `struts`, `struts2`)内的所有Java类,...

    完整的Struts2源码

    Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性极高的应用的解决方案。此压缩包文件"struts-2.2.3"包含了Struts2框架的源代码,这将...

    struts2-例子

    Struts2.x系列是其一个特定的版本,提供了许多增强的功能和改进,以提升开发效率和应用的可维护性。在这个"struts2-例子"压缩包中,我们主要关注的是一个名为"struts2-blank"的项目,这是一个基础的、空白的Struts2...

    strutsAPI(chm格式)

    尽管Struts 1.x本身不支持拦截器,但通过插件如Struts-Plugin可以实现类似的功能,拦截器是Struts 2中的一个重要特性,它们允许在Action执行前后执行额外的逻辑。 **国际化和本地化**: Struts提供了对多语言支持的...

    SSH项目开发需要引入的JAR包

    在Java Web开发中,SSH(Struts2、Spring、Hibernate)是一个常见的开源框架组合,用于构建高效、可扩展的企业级应用程序。这三个框架分别是用于MVC(Model-View-Controller)架构的Struts2,用于依赖注入和事务管理...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。XWork是Struts2的核心库,为Struts2提供许多底层功能,如动作调度、类型转换和异常处理等。这次我们探讨...

    J2EE企业级应用程序开发__Stuts2

    - **基础类库**:构建Struts2应用需要的基础类库包括`struts2-core-2.x.x.jar`、`xwork-2.x.x.jar`、`ognl-2.6.x.jar`、`freemarker-2.3.x.jar`和`commons-logging-1.1.x.jar`。这些类库分别提供了框架的核心功能、...

Global site tag (gtag.js) - Google Analytics