深入解析struts.xml配置的实现原理

—struts2配置深入解析

在struts2中,主要是通过web.xml和struts.xml配置文件来控制action的具体操作。其原理都是通过反射来完成的。

总结来说,可以分成如下几部:

1.浏览器发送action请求,如abc, 此action可以写成abc.action或者不带后缀的abc

2.浏览器发送的abc action请求被web.xml配置中的过滤器StrutsPrepareAndExecuteFilter拦截.

StrutsPrepareAndExecuteFilter的doFilter核心代码如下:

config = configuration.getRuntimeConfiguration().getActionConfig(namespace, actionName);  
//config包含此action对应的class类及method方法  
Class clazz = getClassInstance(className);  
Object obj = clazz.newInstance();  
return obj;  

3.获取到了action实例后,将调用Map

{  
//得到请求参数对应的setter方法。  
Action类.getMethod("set"+paramName的首字母大写);  
//得到请求参数对应的值  
String paramValue = paramMap.get(paramName);  
//以Action实例为调用者,调用set方法,把请求参数值作为参数值传入  
setter.invoke(actionInst, paramValue);  
}  
  1. 再次使用”反射技术”调用method属性所指定的方法,它将返回一个字符串。获取method值的核心代码如下:
    if (StringUtils.isEmpty(this.method)) {
    this.method = config.getMethodName();
    if (StringUtils.isEmpty(this.method)) {
    this.method = ActionConfig.DEFAULT_METHOD; //要是没有配置,使用默认的方法,即execute方法
    }
    methodSpecified = false;
    }

     6. 最后根据struts.xml文件中的<result.../>元素的name以及物理视图资源,调转到实际的视图资源。
    

    request.getRequestDispatch(….).forward(request, response);

下面是一副简单流程示意图:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值