Struts1
(1)客户端向web服务器发出*.do的http请求
(2)Struts1中的核心控制器ActionServlet拦截该请求,并根据用户请求,在Struts-config-xml配置文件里查找对应的业务逻辑控制器Action ,其中Action的name属性指定了用于封装请求参数的ActionForm,之后实例化一个ActionForm并把用户请求的参数填充给ActionForm
(3)核心控制器ActionServlet把请求转发给业务逻辑控制器Action
(4)Action调用ActionForm取出用户提交的请求参数
(5)Action根据javaBean,并传入用户请求参数给javaBean以进行处理
(6)Action根据javaBean处理的结果返回一个ActionForward实例,ActoinForward对象代表转发页面的逻辑名与物理名之间的关系映射。
(7)根据ActionForward将请求转发到相应的jsp页面。
(8)jsp页面调用javaBean显示数据,jsp页面在表现之前,还需要调用对应的javaBean,此处的javaBean不再是包含业务逻辑的javaBean,而是封装溜溜处理结果的普通vo(值对象).jsp页面根据vo值,利用jstl和Struts的标签库来生成http相应给客户端。
Struts2
(1)浏览器发送请求,例如请求/login.action
(2)核心控制器FilterDispatcher根据请求决定调用合适的Action
(3)WebWork的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能
(4)回调Action的excute方法,该方法先获求用户请求参数并调用业务逻辑组件来处理用户请求,
(5)Action的excute方法处理结果集信息将被输入到浏览器中,可以使HTML页面、图像、也可以是PDF文档或其它文档,此时支持的视图技术非常多,既支持jsp,也支持velocity、freemarker等模板技术。