Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.2 Struts2架构

Struts 2使用拦截器作为增强处理(Advice),以用户的业务逻辑控制器为目标,创建一个控制器代理。控制器代理回调业务控制器的execute方法来处理用户请求,该方法的返回值决定了Struts 2将怎样的视图资源呈现给用户。

图1.6显示了Struts 2的体系概图。

图1.6 Struts 2的体系概图

Struts 2框架的大致处理流程如下。

浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。

核心控制器StrutsPrepareAndExecuteFilter根据请求决定调用合适的Action。

Struts 2的拦截器链自动对请求应用通用功能,如workflow、validation或文件上传等功能。

回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以将数据保存到数据库,也可以从数据库中检索信息。实际上,Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。

Action 的 execute 方法将处理结果存入 Stack Context 中,并返回一个字符串;StrutsPrepareAndExecuteFilter将根据返回的字符串跳转到指定视图资源,该视图资源将会读取Stack Context中的信息,并向浏览器生成响应数据。这些响应数据既可以是HTML页面、图像,也可以是 PDF 文档或者其他文档。此时支持的视图技术非常多,既支持 JSP,也支持Velocity、FreeMarker等模板技术。