Struts2

Struts2 架构

从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:

  • 操作(Actions)
  • 拦截器(Interceptors)
  • 值栈(Value Stack)/OGNL
  • 结果(Result)/结果类型
  • 视图技术

请求生命周期

通过上述图片的描述,我们可以依照下面几点解释在Struts2 中用户的请求生命周期:

  • 用户发送一个资源需求的请求到服务器(例如:页面)。
  • 核心控制器查看请求后确定适当的动作。
  • 使用验证、文件上传等配置拦截器功能。
  • 执行选择的动作来完成请求的操作。
  • 另外,如果需要的话,配置的拦截器可做任何后期处理。
  • 最后,由视图显示结果并返回给用户。

这里写图片描述

  • 1、客户端发出一个指向 Servlet 容器(例如Tomcat)的请求。
  • 2、这个请求会经过几个过滤器 Filter(ActionContextCleanUp 可选过滤器、其他 Web 过滤器如 SiteMesh
    等),最后到达 FilterDispatcher 过滤器。
  • 3、接着 FilterDispatcher 过滤器被调用,FilterDispatcher 询问 ActionMapper
    来决定这个请求是否需要调用某个 Action。
  • 4、如果 ActionMapper 决定需要调用某个 Action,FilterDispatcher 把请求的处理交给 Action
    对象的代理(ActionProxy)。
  • 5、ActionProxy 通过配置管理器(Configuration Manager)读取框架的相关配置文件(struts.xml
    以及它包含的 *.xml 配置文件),找到需要调用的 Action 类。
  • 6、找到需要调用的 Action 类后,ActionProxy 会创建一个 ActionInvocation 的实例。
  • 7、ActionInvocation 在调用 Action 的过程之前,会先依次调用相关配置拦截器(Intercepter),执行结果返回
    结果字符串。
  • 8、ActionInvocation 负责查找 结果字符串 对应的 Result,然后执行这个
    Result,再返回对应的结果视图(如JSP等等)来呈现页面。
  • 9、再次调用所用的配置拦截器(调用顺序与第7步相反),然后响应(HttpServletResponse)被返回给浏览器。

当你在Struts2 的web应用程序里点击一个超链接或提交一个HTML表单时,会由控制器收集输入并发送一个叫Actions的Java类。Action被执行后,Result会选择一个资源给予响应。这个资源通常是一个JSP,也可以是一个PDF文件,一个Excel表格,或者是一个Java小程序窗口。

Struts2组件

  • Action(操作)
    创建一个动作类,包含完整的业务逻辑并控制用户、模型以及视图间的交互。

  • Interceptors(拦截器)
    这是控制器的一部分,可依据需求创建拦截器,或使用现有的拦截器。

  • View(视图)
    创建一个JSP与用户进行交互,获取输入并呈现最终信息。

  • Configuration Files(配置文件)
    创建配置文件来连接动作、视图以及控制器,这些文件分别是struts.xml、web.xml以及struts.properties。

优点

  • Struts2 是非侵入式设计,即不依赖于Servlet API 和 Struts API.
  • Struts2 提供了强大的拦截器,利用拦截器可以进行 AOP编程(面向切面的编程),实现如权限拦截等功能。
  • Struts2 提供了类型转换器,可以很方便地进行类型转换,例如将特殊的请求参数转换成需要的类型。
  • Struts2 支持多种表现层技术,如 JSP、FreeMarker、Velocity 等。
  • Struts2 的输入验证可以对指定的方法进行验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值