Struts介绍
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)
立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样
的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有
着太大的变化,但是相对于WebWork,Struts 2的变化很小。
执行流程分析
- 浏览器发送一个请求(HttpServletRequest)
- 程序会调用StrutsPrepareAndExcuteFilter, 然后询问ActionMapper请求是否需要调用某个Action
- 如果ActionMapper决定调用某个Action,StrutsPrepareAndExcuteFilter会把请求的处理交给ActionProxy.
- ActionProxy通过配置管理器(Configuration Manager)从配置文件(struts.xml)中读取框架的配置信息,从而找到需要调用的Action类
- ActionProxy会创建一个ActionInvocation的实例。
- ActionInvocation使用命名模式来调用Action,在调用Action前,会依次调用所有配置的拦截器(Intercepter1、Intercepter2、...)。
- 一旦Action执行完,返回结果字符串,ActionInvocation就会负责查找结果字符串对应的result,然后执行这个result。通常情况下result会调用一些模板(JSP等)来呈现页面.
- 产生的result信息返回给ActionInvocation,此过程中拦截器会被再次执行(顺序与Action执行之前相反).
- 产生一个HttpServletResponse的响应行为,通过SrutsPrepareAndExecuteFilter反馈给客户端
xml配置信息模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="hello" namespace="/" extends="struts-default">
<action name="HelloAction" class="cn.lacknb.TestAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>