12、
ActionInvocation
的
invoke
()方法执行完毕后,向
ActionProxy
返回一个
String
类型的结果码,最后,
ActionProxy
清理状态并返回。
这个究竟发生在哪个流程呢?
我们访问:
DEBUG整个流程:
DEBUG [com.opensymphony.xwork2.interceptor.StaticParametersInterceptor] - Setting static parameters {}
2010-07-19 13:36:26,718
DEBUG [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - Setting params cid => [ 000H000A ]
可以看到,发生在拦截器那个流程,处理请求参数的ParameterInterceptor 类,还记得第七步说什么吗?
7、ActionInvocation的invoke()方法从拦截器映射中查找尚未执行的拦截器,调用它的intercept(invocation)方法,并将自身对象的引用作为参数传递给拦截器。
就是调用:ParameterInterceptor 的
intercept(ActionInvocation invocation)
public class ParametersInterceptor extends MethodFilterInterceptor
{
public String doIntercept(ActionInvocation invocation)
throws Exception
{
Object action = invocation.getAction();
if (!(action instanceof NoParameters)) {
ActionContext ac = invocation.getInvocationContext();
Map parameters = ac.getParameters();
if (LOG.isDebugEnabled()) {
LOG.debug("Setting params " + getParameterLogMap(parameters));
}
if (parameters != null) {
Map contextMap = ac.getContextMap();
try {
OgnlContextState.setCreatingNullObjects(contextMap, true);
OgnlContextState.setDenyMethodExecution(contextMap, true);
OgnlContextState.setReportingConversionErrors(contextMap, true);
ValueStack stack = ac.getValueStack();
setParameters(action, stack, parameters);
} finally {
OgnlContextState.setCreatingNullObjects(contextMap, false);
OgnlContextState.setDenyMethodExecution(contextMap, false);
OgnlContextState.setReportingConversionErrors(contextMap, false);
}
}
}
return invocation.invoke();
}
,,,,
相关推荐
为了防范篡改服务器端对象,XWork的ParametersInterceptor不允许参数名中出现“#”字符,但如果使用了Java的unicode字符串表示\u0023,攻击者就可以绕过保护,修改保护Java方式执行的值: #_memberAccess['...
xwork-1.1.1.jar, xwork-1.1.jar, xwork-1.2.1.jar, xwork-1.2.3.jar, xwork-2.0.0.jar, xwork-2.0.1.jar, xwork-2.0.3.jar, xwork-2.0.4.jar, xwork-2.0.5.jar, xwork-2.0.6.jar, xwork-2.0.7.jar, xwork-2.1.0.jar...
JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源代码 xwork-2.0.4JavaEE源...
- 权限控制:XWork提供了安全机制,可以限制用户访问特定的Action或方法。 - 防止XSS和CSRF:框架内置了一些防止跨站脚本攻击和跨站请求伪造的防护措施。 7. **性能优化**: - 缓存机制:XWork支持缓存策略,...
xwork-2.1.5.jar包含了整个框架的功能,而xwork-core-2.1.6.jar则是核心模块,包含Action、Interceptor等关键组件。 7. **与Struts2的关系**: XWork与Struts2紧密相关,Struts2是基于XWork构建的一个MVC框架,它...
1. **集成到项目**:将xwork-2.1.2.jar添加到项目的类路径中,确保与Struts2框架版本匹配。 2. **配置Struts2**:在struts.xml配置文件中,定义Action和对应的类,指定拦截器栈。 3. **创建Action**:编写Action类,...
在xwork-core中,Action类是一个接口,开发者通常需要继承或实现这个接口来创建自己的业务处理类。 2. **Interceptor**(拦截器):拦截器是xwork-core中的一个重要概念,它可以在Action执行前后插入额外的逻辑。...
然而,如果框架配置不当或者没有充分过滤用户输入,攻击者可以通过构造特定的URL参数来绕过安全控制,执行任意系统命令。上述URL中的编码字符串就是利用了OGNL的这种特性,通过设置特定的成员访问和方法执行权限,...
用于解决struts2升级至2.3.37时 出现java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.put(Ljava/lang/异常时,更换的xwork-core-2.3.37.jar
xwork-core-2.3.15.1.jar
OpenLogic-xwork-2.0.7-all-src-1.zip这个压缩包包含的是OpenLogic公司发布的XWork 2.0.7的全部源代码,对于深入理解和定制Struts2框架具有重要的参考价值。下面我们将详细探讨XWork的核心功能和关键知识点。 1. **...
xwork-core-2.3.16.3-sources.jar xwork-core源码 spring 4.0.4 使用的版本
2. **依赖库**:XWork 2.0.5可能依赖于其他开源库,如OGNL(Object-Graph Navigation Language)用于表达式语言,Commons Lang和Commons BeanUtils提供实用工具类。 3. **部署与运行**:JAR文件是XWork在项目中的...
《深入剖析xwork-assembly-2.1.6-src:揭秘源码的奥秘》 在软件开发领域,源码是理解系统运作机制的关键。"xwork-assembly-2.1.6-src"是一个开放源码的项目,它为我们提供了深入了解xwork框架核心功能的机会。这个...
xwork-core-2.3.4.1-sources.jar 源代码,好不容易找到,和大家分享一下
xwork-core-2.3.16.1.jar,欢迎大家下载。
《深入解析xwork-core-2.2.1-sources》 xwork-core是Struts2框架的核心组件之一,它在Web应用开发中扮演着至关重要的角色。本文将深入探讨xwork-core-2.2.1-sources中的核心概念、功能以及源代码分析,帮助开发者更...
Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型...总之,深入学习Struts-xwork-core的源码,将帮助你更好地掌握Struts2框架的精髓,提高开发效率,解决实际项目中遇到的问题。
xwork-core-2.1.6.jar这个版本才内含StringUtils.class这个工具类,我已经将这个类添加到xwork-core-2.3.34.jar内了。
`xwork-2.1.5`是XWork的一个特定版本,可能包含了一些新特性、性能优化和已知问题的修复。随着Struts2的更新,XWork也会相应升级以保持兼容性并提供更完善的功能。 总之,XWork jar包是构建基于Struts2的Web应用...