`
zuiyanwangyue
  • 浏览: 167210 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

在Struts2中自定义插件

阅读更多

一、开发插件类

接口

package com.neuqsoft.symphony.plugin;
public interface HelloWorld{
  String hello(); 
}

实现类

package com.neuqsoft.symphony.plugin.impl;
public class HelloWorldImpl implements HelloWorld{
  public String hello(){
    return "HelloWorld";
  } 
}

二、将插件打包,在将插件打包的时候,除了要将与插件相关的类文件打包,还要将文件名为struts-plugin.xml的xml文件放在Jar文件的根目录中,在加载时struts2框架会搜寻根目录中存在struts-plugin.xml文件的Jar文件。我们刚才开发的插件的struts-plugin.xml文件的内容如下:  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <bean type="com.neuqsoft.symphony.plugin.HelloWorld" class="com.neuqsoft.symphony.
plugin.impl.HelloWorldImpl" name="HelloWorld"/>
</struts> 

说明:其中bean的type属性指明了插件的接口,class属性指明了实现类,name属性指明了bean的名字。

编辑好xml文件后将它和类文件一起打包就可以了(注意将它放在和顶层包同一层次的目录中,在这里是com)jar -cvf MyPlugin.jar com,struts-plugin.xml,这条命令会生成一个名为MyPlugin.jar的归档文件。

三、测试我们的插件,为了验证我们刚才开发的插件可以正常工作,现在新建一个名为pluginTest的web工程,在WEB-INF/lib中除了放置构建struts2必须的Jar包以外将我们自己开发的Jar也放在这个目录下面。
3.1、开发一个Action

package com.neuqsoft.symphony.action;
//import  
import java.util.*;
import com.neuqsoft.symphony.plugin.HelloWorld;//我们的插件的对外接口 
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Inject;

public class MyAction extends ActionSupport {
  private static final long serialVersionUID = 1L;
  private HelloWorld plugin;
  private String message; 
  @Inject
  //插件资源依赖容器注入,"HelloWorld"是在struts-plugin.xml中指定的bean名称 
  public void setContainer(Container container) {
    plugin=container.getInstance(HelloWorld.class,"HelloWorld");
  }
  
  @Override
  public String execute(){
    message=plugin.hello();
    return SUCCESS; 
  } 
  public String getMessage() {
    return this.message;
  }
}

3.2、编辑struts.xml文件(放在WEB-INF/classes目录下)  

<!DOCTYPE struts PUBLIC "- //Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http: //struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
  <package name= "default" extends="struts- default">
    <action name="MyAction" class="com.neuqsoft.symphony.action.MyAction">
      <result>/show.jsp</result>
    </action>
  </package>
</struts>

3.3、定义JSP页面show.jsp  

<%@ taglib prefix= "s" uri= "/struts-tags" %>
<html>
  <head><title>Hello World!</title></head>
  <body><h2><s:property value= "message"/></h2>
  </body>
</html>

3.4、接下来就可以将我们的web工程部署在Tomcat里面了,然后在浏览器中输入 http://localhost:8080/pluginTest/MyAction.action 查看结果吧。  

分享到:
评论
2 楼 zuiyanwangyue 2009-11-24  
ariestiger 写道
好简单,但也很好理解。
不过问一句,struts2中或者struts1中的这种插件,和rails这种里面的插件有什么不同,或者你再讲讲rails里的插件吧,
我看得真有点糊涂了,rails里的没有细看,
才刚入门;grails里的那个完全好像就是一个工程啊,
头大,,,,头大。。。。。。。。。。。。


真是不好意思,我对Rails一点也不熟悉,不过struts2的插件体系结构是很强大的,它对spring、jsf、velocity的支持都是通过插件来实现的,可以研究研究这些插件的实现就明白插件体系结构在strust2中是如何发挥作用的了。
1 楼 ariestiger 2009-11-20  
好简单,但也很好理解。
不过问一句,struts2中或者struts1中的这种插件,和rails这种里面的插件有什么不同,或者你再讲讲rails里的插件吧,
我看得真有点糊涂了,rails里的没有细看,
才刚入门;grails里的那个完全好像就是一个工程啊,
头大,,,,头大。。。。。。。。。。。。

相关推荐

    Struts2自定义分页标签

    本篇文章将深入探讨如何在Struts2中实现自定义分页标签,以及相关的源码分析和工具使用。 首先,我们需要理解分页的基本原理。分页通常涉及到两个主要部分:服务器端的分页逻辑和客户端的显示。服务器端负责处理...

    Struts 2 自定义MVC 框架

    在Struts 2中,模型通常由JavaBean或领域对象表示,它们处理数据的增删改查,并通过Action类与控制器交互。 2. **视图(View)**:视图是用户界面,负责呈现模型中的数据。Struts 2支持多种视图技术,如JSP、...

    struts2的json插件

    2. **配置struts.xml**:在配置文件中声明JSON插件,并指定需要返回JSON的Action。 3. **Action类和结果**:在Action类中定义返回对象,Struts2会自动将其转换为JSON。 4. **前端处理**:在JavaScript中接收并解析...

    struts2的自定义校验器代码

    自定义校验器在Struts2中扮演着至关重要的角色,它允许开发者根据业务需求定制特定的验证规则,以确保数据输入的正确性和一致性。本文将深入探讨如何在Struts2中创建和使用自定义校验器。 ### 一、Struts2验证概述 ...

    Netbeans Struts2插件

    对于Struts2框架的支持,NetBeans提供了一个专门的插件,使得在NetBeans中开发Struts2应用变得更为便捷。 **NetBeans Struts2插件的核心特性:** 1. **自动代码生成**:该插件可以自动生成Struts2的Action类、配置...

    使用Struts2的JSON插件来实现JSON数据传递

    Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...

    struts2 多个文件上传 插件goouploader

    在Struts2中处理文件上传是一项常见的需求,而Goouploader插件就是专门为了简化这一过程而设计的。Goouploader插件允许用户在Web表单中选择多个文件进行同时上传,极大地提高了用户体验。 在Struts2中,传统的文件...

    自定义实现Struts2源代码

    拦截器是Struts2中的一个重要概念,它允许你在Action执行前后执行自定义逻辑。比如,你可以创建一个验证拦截器,用于在Action执行前检查用户输入的有效性。自定义拦截器需要实现`...

    struts2插件整合

    - **Action**:在Struts2中,Action是业务逻辑的载体,处理用户请求并返回结果。 - **Result**:Action执行后,通常会返回一个Result,定义了如何呈现响应给用户。 - **Interceptor**:拦截器是Struts2的核心组件...

    struts2的插件使用

    这篇博文主要探讨的是Struts2中的"convention-plugin",这是一个自动配置插件,极大地简化了开发过程。 在传统的Struts2应用中,开发者需要手动编写XML配置文件来定义Action类和结果页面的映射。然而,随着...

    struts2与json插件(2)

    在Struts2中,JSON(JavaScript Object Notation)插件是用于处理JSON数据交换的重要组件,这使得Struts2能够与前端的AJAX或者JavaScript进行高效的数据交互。JSON是一种轻量级的数据交换格式,易于人阅读和编写,...

    struts2的json插件实例

    在Struts2中,可以通过JSON插件来实现JSON数据的处理,使得Web应用能够更方便地与AJAX或JavaScript进行交互。 本实例将详细介绍如何在Struts2项目中配置并使用JSON插件,以及如何创建一个简单的JSON响应。 首先,...

    留言板留言板struts2留言板struts2

    2. **Action与ActionMapping**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个用户请求,处理来自客户端的请求并返回结果。ActionMapping则负责配置Action与URL的映射关系,使得请求能正确路由...

    struts2 jquery插件

    在探讨Struts2与jQuery插件的结合时,我们深入分析了如何在Struts2框架中集成并利用jQuery插件来增强Web应用程序的交互性和用户体验。Struts2作为一个流行的Java Web开发框架,提供了一种灵活的方式来构建MVC架构的...

    STRUTS2:零配置插件CodeBehind

    本文将详细介绍Struts2中的两个插件——Zero Config(零配置)与CodeBehind,以及它们如何共同工作以减少配置文件的复杂度。 #### 二、Zero Config插件介绍 Zero Config插件的主要目的是减少甚至消除`struts.xml`...

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

    在Struts2中,零配置的概念意味着尽量减少或避免手动编写XML配置文件,以提高开发效率和减少出错的可能性。`Convetion`插件是Struts2实现零配置的核心工具,它基于“约定优于配置”的原则工作。 ### 1. Convention ...

    Struts2接口文档

    在Struts2的配置中,Struts.xml文件扮演着关键角色,它包含了Action、Result、Interceptor的配置信息。通过这个配置文件,开发者可以声明Action的映射、指定Result类型以及设置Interceptor链。 此外,Struts2还支持...

    struts2 中文手册

    3. **插件系统**:Struts2有一个丰富的插件库,例如Tiles插件用于布局管理,JSON插件支持JSON数据交互,Dojo插件则用于与Dojo JavaScript库集成。 4. **Action和结果**:Action是业务逻辑的载体,处理HTTP请求并...

    Struts2-API+Struts2中文帮助文档

    在实际开发中,Struts2允许灵活的扩展性,例如通过编写自定义拦截器来增强功能,或使用FreeMarker或JSP作为视图层模板技术。文档中还会讲解如何使用Struts2的异常处理机制,以及如何调试和解决常见的运行时问题。 ...

    struts2 API帮助文档

    - OGNL是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以访问对象的属性,执行方法,甚至进行复杂的运算和控制结构。 7. **插件(Plugins)** - Struts2支持多种插件来扩展功能,如Struts2-dojo-...

Global site tag (gtag.js) - Google Analytics