`

xwork学习(一)

 
阅读更多
基本上是从网上修改的一个demo
流程是 请求-》拦截-》结果的一个响应。
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"  namespace="/helloWorld">
		<result-types>
			<result-type name="myConsole" class="com.stx.result.ResultTest"/>
		</result-types>		
	    <interceptors>
  	      <interceptor name="helloInterceptor" class="com.stx.interceptor.InterceptorTest"/>
 	    </interceptors>
		<action name="actionTest" class="com.stx.action.ActionTest">
			<interceptor-ref name="helloInterceptor"/>
			<result type="myConsole"></result>
		</action>
	</package>
</xwork>

action 配置
package com.stx.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("action="+ActionContext.getContext().get("name"));
		return SUCCESS;
	}
	
}

interceptor拦截器
package com.stx.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class InterceptorTest extends AbstractInterceptor{
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
				System.out.println("intercept:"+ActionContext.getContext().get("name")); 	
                       //返回值invocation.invoke();
//中止整个执行,直接返回一个字符串作为resultCode 
//通过递归调用负责调用堆栈中下一个Interceptor的执行invocation.invoke();
//这个参数其实是负责调度到action的类本身参数传进来 形成一个递归
//如果在堆栈内已经不存在任何的Interceptor,调用Action 
     			      return null;
	}

}

result类
package com.stx.result;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.Result;
public class ResultTest implements Result {
	@Override
	public void execute(ActionInvocation arg0) throws Exception {
		 System.out.println("result execute:"+ ActionContext.getContext().get("name"));  		
	}
}

test测试
package com.stx.test;
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 TestXwork {
	public static void main(String[] args) {
		ConfigurationManager cm=new ConfigurationManager ()			Configuration cg=cm.getConfiguration();    
		Container c = cg.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); 
		        for(int i=-2;i<actionProxy.getInvocation().getStack().size();i++){
		        	System.out.println(actionProxy.getInvocation().getStack().pop());
		        }		        
	        try {  
		           actionProxy.execute();  
		        } catch (Exception e) {  
		           // TODO Auto-generated catch block   
		            e.printStackTrace();  
		        }  
		   }  	
}

整个运行流程出来了。。。
中间的一些细节不明白,看源码的时候 接口看的眼花缭乱!
这是第一次源码感觉很吃力。
分享到:
评论

相关推荐

    xwork

    标题 "xwork" 暗示我们关注的是一个与软件框架或库相关的概念,特别是它在Java企业级开发中的应用。XWork是一个历史悠久的开源项目,它是Struts 1框架的核心部分,负责处理Action的执行逻辑。Struts是Apache软件基金...

    xwork官网源码 下载 xwork

    XWork是一个强大的Action框架,它为Java Web应用程序提供了模型-视图-控制器(MVC)模式的支持。这个框架的主要目标是简化企业级应用的开发,提高代码的可维护性和可扩展性。在本篇文章中,我们将深入探讨XWork的...

    xwork源文件及文档

    XWork提供了一种强大的、可扩展的、基于事件驱动的模型-视图-控制器(MVC)设计模式实现,支持拦截器和类型转换等关键功能。在深入理解XWork之前,我们首先要了解它与Struts2的关系。 **一、XWork与Struts2的关系**...

    xwork-2.0.7jar

    xwork-2.0.7是一个重要的Java框架,它在Web应用开发领域扮演着不可或缺的角色。本篇文章将详细探讨xwork的核心功能、设计理念以及如何通过其源码进行深入学习。 一、xwork框架简介 xwork是Struts2的基础,它为应用...

    xwork2.1.2源码与xwork2.2.1源码

    《深入解析xwork 2.x源码:从2.1.2到2.2.1的演进》 xwork作为一个强大的Action框架,是Struts2的...通过深入学习xwork源码,开发者可以更好地掌握MVC设计模式,理解Web应用的控制层实现,从而在实践中发挥更大的效能。

    完整的xwork源代码

    XWork 是一个强大的、基于Java的企业级框架,它主要负责业务逻辑的处理,是Struts2的核心组件之一。在深入理解XWork之前,我们首先要明白什么是源代码。源代码是程序员用高级编程语言编写的应用程序的原始指令集,它...

    xwork-2.1.6 doc文档

    XWork 是 Struts 2 框架的核心组件之一,它提供了一种强大的动作处理机制,包括事务管理、异常处理和类型转换等功能。XWork 2.1.6 版本的 doc 文档包含了详细的 API 参考、用户指南和开发者信息,帮助开发者深入理解...

    xwork-2.0.5-src+xwork-2.0.5-jar.zip

    XWork是一个开源的、基于Java的企业级框架,其主要目标是提供一个灵活、可扩展的基础,用于构建复杂的企业级应用程序。XWork 2.0.5是该框架的一个重要版本,包含了源代码和对应的JAR文件,为开发者提供了深入理解和...

    OGNL和XWORK源代码

    2. **命令模式**:XWork采用了命令模式设计,每个Action对应一个业务操作。 3. **拦截器(Interceptor)**:XWork的拦截器链允许在Action执行前后插入自定义逻辑,如日志记录、事务管理、权限检查等。 4. **工作流...

    xwork源码及文档

    XWork,作为一个强大的Action框架,是Struts2的核心组成部分,为Web应用提供了模型驱动的架构支持。它主要用于处理用户请求,执行业务逻辑,并与视图进行交互,从而实现MVC设计模式。在深入理解XWork之前,我们需要...

    Xwork完整源代码

    深入研究Xwork的源代码,我们可以学习到如何优雅地实现MVC架构,如何利用拦截器增强应用的灵活性,以及如何设计可扩展的框架。这对于提升Java Web开发技能,理解Struts2框架的工作方式,以及解决实际开发中的问题都...

    xwork-2.0.4源码

    xwork-2.0.4是ActionServlet的核心组件之一,它为Struts2框架提供了强大的业务逻辑处理能力。这个源码包是理解Struts2工作原理的关键,因为它包含了xwork的核心实现,包括动作调度、依赖注入、类型转换、拦截器机制...

    XWork源码+docs全

    XWork是Struts2框架的核心组件,它提供了一种基于拦截器(Interceptor)的Action管理机制,为构建可维护、可扩展的企业级Web应用程序提供了强大的支持。本资源包含XWork的完整源码以及相关的文档(docs)和示例项目...

    xwork2.0.4源代码

    xwork2.0.4源代码的获取通常有两种方式,一是通过myeclipse的svn工具,二是直接从xwork的官方网站下载包含源代码的all版本。这两种方法都是为了确保开发者能够深入理解并定制这个强大的框架。 xwork2.0.4的源代码中...

    xwork-2.0.5-src

    总之,`xwork-2.0.5-src`源代码是Java Web开发者的一份宝贵资源,通过深入学习,可以提升对MVC框架的理解,从而提高开发效率和代码质量。无论是初学者还是经验丰富的开发者,都应该投入时间去探索这个框架的内在世界...

    XWork 源码

    XWork是Struts2框架的核心组件,它提供了一种基于拦截器的模型-视图-控制器(MVC)架构,为Java开发人员提供了强大的动作处理和业务逻辑控制能力。源码分析有助于深入理解其工作原理,提升编程技能,以及解决实际...

    xwork源代码,最新版本

    XWork是一个功能强大的Action框架,它为Java Web应用程序提供了灵活且可扩展的基础结构。XWork的核心设计理念是解耦业务逻辑与视图,使得开发者能够专注于实现应用的功能,而无需过于关注底层细节。在本文中,我们将...

    xwork-core源码

    2. **Interceptor(拦截器)**:拦截器是xwork-core的一大特色,它允许开发者在Action执行前后插入自定义逻辑。通过配置拦截器栈,可以实现如权限校验、日志记录等功能。拦截器的实现基于责任链模式,使得业务处理...

    xwork2源代码及jar

    《XWork2源代码与Struts2核心解析》 ...同时,对于想要深入学习Java Web开发和MVC模式的人来说,XWork2是一个不可忽视的学习对象。无论是为了优化现有项目,还是为了提升个人技能,对XWork2的理解都将是宝贵的财富。

    xwork 源代码

    xwork-2.1.6版本是xwork的一个稳定版本,包含了大量的改进和优化。这个版本修复了一些已知的bug,提升了性能,并引入了新的特性和功能。下面,我们将围绕xwork的核心模块,详细解读其源代码的主要结构和工作流程。 ...

Global site tag (gtag.js) - Google Analytics