一、开发插件类
接口
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
查看结果吧。
分享到:
相关推荐
本篇文章将深入探讨如何在Struts2中实现自定义分页标签,以及相关的源码分析和工具使用。 首先,我们需要理解分页的基本原理。分页通常涉及到两个主要部分:服务器端的分页逻辑和客户端的显示。服务器端负责处理...
在Struts 2中,模型通常由JavaBean或领域对象表示,它们处理数据的增删改查,并通过Action类与控制器交互。 2. **视图(View)**:视图是用户界面,负责呈现模型中的数据。Struts 2支持多种视图技术,如JSP、...
2. **配置struts.xml**:在配置文件中声明JSON插件,并指定需要返回JSON的Action。 3. **Action类和结果**:在Action类中定义返回对象,Struts2会自动将其转换为JSON。 4. **前端处理**:在JavaScript中接收并解析...
自定义校验器在Struts2中扮演着至关重要的角色,它允许开发者根据业务需求定制特定的验证规则,以确保数据输入的正确性和一致性。本文将深入探讨如何在Struts2中创建和使用自定义校验器。 ### 一、Struts2验证概述 ...
对于Struts2框架的支持,NetBeans提供了一个专门的插件,使得在NetBeans中开发Struts2应用变得更为便捷。 **NetBeans Struts2插件的核心特性:** 1. **自动代码生成**:该插件可以自动生成Struts2的Action类、配置...
Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...
在Struts2中处理文件上传是一项常见的需求,而Goouploader插件就是专门为了简化这一过程而设计的。Goouploader插件允许用户在Web表单中选择多个文件进行同时上传,极大地提高了用户体验。 在Struts2中,传统的文件...
拦截器是Struts2中的一个重要概念,它允许你在Action执行前后执行自定义逻辑。比如,你可以创建一个验证拦截器,用于在Action执行前检查用户输入的有效性。自定义拦截器需要实现`...
- **Action**:在Struts2中,Action是业务逻辑的载体,处理用户请求并返回结果。 - **Result**:Action执行后,通常会返回一个Result,定义了如何呈现响应给用户。 - **Interceptor**:拦截器是Struts2的核心组件...
这篇博文主要探讨的是Struts2中的"convention-plugin",这是一个自动配置插件,极大地简化了开发过程。 在传统的Struts2应用中,开发者需要手动编写XML配置文件来定义Action类和结果页面的映射。然而,随着...
在Struts2中,JSON(JavaScript Object Notation)插件是用于处理JSON数据交换的重要组件,这使得Struts2能够与前端的AJAX或者JavaScript进行高效的数据交互。JSON是一种轻量级的数据交换格式,易于人阅读和编写,...
在Struts2中,可以通过JSON插件来实现JSON数据的处理,使得Web应用能够更方便地与AJAX或JavaScript进行交互。 本实例将详细介绍如何在Struts2项目中配置并使用JSON插件,以及如何创建一个简单的JSON响应。 首先,...
2. **Action与ActionMapping**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个用户请求,处理来自客户端的请求并返回结果。ActionMapping则负责配置Action与URL的映射关系,使得请求能正确路由...
在探讨Struts2与jQuery插件的结合时,我们深入分析了如何在Struts2框架中集成并利用jQuery插件来增强Web应用程序的交互性和用户体验。Struts2作为一个流行的Java Web开发框架,提供了一种灵活的方式来构建MVC架构的...
本文将详细介绍Struts2中的两个插件——Zero Config(零配置)与CodeBehind,以及它们如何共同工作以减少配置文件的复杂度。 #### 二、Zero Config插件介绍 Zero Config插件的主要目的是减少甚至消除`struts.xml`...
在Struts2中,零配置的概念意味着尽量减少或避免手动编写XML配置文件,以提高开发效率和减少出错的可能性。`Convetion`插件是Struts2实现零配置的核心工具,它基于“约定优于配置”的原则工作。 ### 1. Convention ...
在Struts2的配置中,Struts.xml文件扮演着关键角色,它包含了Action、Result、Interceptor的配置信息。通过这个配置文件,开发者可以声明Action的映射、指定Result类型以及设置Interceptor链。 此外,Struts2还支持...
3. **插件系统**:Struts2有一个丰富的插件库,例如Tiles插件用于布局管理,JSON插件支持JSON数据交互,Dojo插件则用于与Dojo JavaScript库集成。 4. **Action和结果**:Action是业务逻辑的载体,处理HTTP请求并...
在实际开发中,Struts2允许灵活的扩展性,例如通过编写自定义拦截器来增强功能,或使用FreeMarker或JSP作为视图层模板技术。文档中还会讲解如何使用Struts2的异常处理机制,以及如何调试和解决常见的运行时问题。 ...
- OGNL是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以访问对象的属性,执行方法,甚至进行复杂的运算和控制结构。 7. **插件(Plugins)** - Struts2支持多种插件来扩展功能,如Struts2-dojo-...