您的位置:首页 > 编程语言 > Java开发

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

2016-12-09 17:49 411 查看
—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);
}


再次使用”反射技术”调用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);

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts