xwork搭建

    技术2022-05-19  21

    XWork是一个标准的Command模式实现,其目的是:创建一个泛化的、可重用且可扩展的命令模式框架,而不是一个特定在某个领域使用的框架,创建一个工程,下载xwork-core-2.1.6.jar

     

    创建一个xwork.xml文件,内容如下

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 2.0//EN" "http://www.opensymphony.com/xwork/xwork-2.0.dtd"> <xwork> <include file="xwork-default.xml" /> <package name="myPackage" extends="xwork-default" namespace="/helloWorld"> <result-types> <result-type name="myConsole" class="ResultTest" /> </result-types> <interceptors> <interceptor name="helloInterceptor" class="InterceptorTest"/> </interceptors> <action name="actionTest" class="ActionTest"> <interceptor-ref name="helloInterceptor"/> <result type="myConsole"> </result> </action> </package> </xwork>

     

     

    xwork主要的内容有Action,Interceptor,Result,可以继承它们来实现相应的功能,Action用来实现用户逻辑的功能,继承Interceptor实现拦截器的功能,Result是Action结果的视图展现,

     

    import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; public class ActionTest implements Action { @Override public String execute() throws Exception { System.out.println("text execute:"+ActionContext.getContext().get("name")); return SUCCESS; } }

     

    import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class InterceptorTest extends AbstractInterceptor { private static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("intercept:"+ActionContext.getContext().get("name")); return invocation.invoke(); } }

     

     

    import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.Result; import com.opensymphony.xwork2.ActionContext;; public class ResultTest implements Result { private static final long serialVersionUID = 1L; @Override public void execute(ActionInvocation invocation) throws Exception { System.out.println("result execute:"+ ActionContext.getContext().get("name")); } }

     

     

    新建一个Main.java来启动整个程序

    import java.util.HashMap; import java.util.Map; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.inject.Container; public class Main { public static void main(String args[]){ ConfigurationManager cm = new ConfigurationManager(); Configuration config = cm.getConfiguration(); Container c = config.getContainer(); ActionProxyFactory actionProxyFactory = c.getInstance(ActionProxyFactory.class); Map<String,Object> m = new HashMap<String,Object>(); m.put("name", "bobo"); ActionProxy actionProxy = actionProxyFactory.createActionProxy( "/helloWorld", "actionTest",null, m); try { actionProxy.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

     

    执行该程序,将会得到如下结果

    intercept:bobotext execute:boboresult execute:bobo

     

     

     

     


    最新回复(0)