深入解析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核心代码如下:
3.获取到了action实例后,将调用Map
再次使用”反射技术”调用method属性所指定的方法,它将返回一个字符串。获取method值的核心代码如下:
request.getRequestDispatch(….).forward(request, response);
下面是一副简单流程示意图:
在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);
下面是一副简单流程示意图:
相关文章推荐
- JQuery+Strusts1.x无刷新登录
- 将json转换成struts参数的方法
- java struts常见错误以及原因分析
- Struts之logic标签库详解
- struts中动态方法调用使用通配符
- 通过实例深入学习Java的Struts框架中的OGNL表达式使用
- Java的Struts框架中append标签与generator标签的使用
- struts2通过action返回json对象
- struts2的select标签用法实例分析
- SSH框架网上商城项目第20战之在线支付平台
- JavaWeb Struts文件上传功能实现详解
- struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成简单demo
- 在Java的Struts框架下进行web编程的入门教程
- 详解Java的Struts框架中注释的用法
- java中struts 框架的实现
- 利用Java的Struts框架实现电子邮件发送功能
- 在Java的Struts框架中ONGL表达式的基础使用入门
- 详解Java的Struts框架中栈值和OGNL的使用
- Java的Struts框架简介与环境配置教程
- Java的Struts框架中的if/else标签使用详解