天天看点

xwork搭建

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

xwork搭建

创建一个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:bobo

text execute:bobo

result execute:bobo