框架篇 -- Struts2

Posted Abri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架篇 -- Struts2相关的知识,希望对你有一定的参考价值。

  Struts框架很很早接触的一个框架知识,已经不那么频繁使用了,但是总结一下,复习一下还是很有必要的;

  Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。提供了 Web 应用程序开发过程中的一些常见问题的解决方案:

  • 页面导航活动进行管理
  • 对来自用户的输入数据进行合法性验证
  • 统一的布局
  • 可扩展性
  • 国际化和本地化
  • 支持 Ajax
  • 表单的重复提交

  Struts 2Struts的下一代产品,是在 struts 1WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2体系结构Struts 1的体系结构差别巨大。Struts 2WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1Struts 2有着太大的变化,但是相对于WebWorkStruts 2的变化很小。虽然Struts2struts1在名字上差别不大,但Struts2编码模式与struts1几乎可以说是不一样的。那么既然有了struts1,为何还要推出struts2。主要是因为struts2有以下优点:

  1. 在软件设计上Struts2没有像struts1那样跟Servlet APIstruts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet APIstruts API Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。
public class OrderListAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
            throws Exception {
    }
}
  1. Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。
  2. Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。
  3. Struts2提供支持多种表现层技术,如:JSPfreeMarkerVelocity
  4. Struts2的输入校验可以对指定方法进行校验,解决了Struts1长久之痛。
  5. 提供了全局范围、包范围和Action范围的国际化资源文件管理实现

Struts2 从本质上讲已不是从 Struts1 扩展而来, 说它是一个换了品牌标签的 WebWork 更合适

Struts1 升级到 Struts2:

  • Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器
  • Struts1 中每个 html 表单都对应一个 ActionForm 实例. Struts2 , HTML 表单将被直接映射到一个 POJO.
  • Struts1 的验证逻辑编写在 ActionForm ; Struts2 中的验证逻辑编写在 Action .
  • Struts1 , Action 类必须继承 org.apache.struts.action.Action ; Struts2 中任何一个 POJO 都可以是一个 Action .
  • Struts2 在页面里使用 OGNL 来显示各种对象模型, 可以不再使用 EL JSTL

简单认识了Struts2下面我们就来开始Struts2的深尤浅入深学习;

Struts2开发前奏

  我们知道Struts的重点在于拦截器,那么我们自己通过拦截器来实现一下一个web小项目,在Struts2学习之前帮助理解;

Struts2的入门学习

  配置struts.xml,简单入门

Struts2的处理流程

   Struts2的核心在于拦截器,所有的拦截器会在到达Action前加载完,而Struts2提供的一些核心功能也是通过拦截器来完成的,拦截器中间嵌套调用拦截器,形成了链式操作,可以具体通过断点调试看一下拦截器的执行流程;

Struts2的基本配置

   Struts2配置文件的再解读;

Struts2与Servlet的API解耦

   Struts2提供了用于获取Servlet中相关对象的方法;

Struts2的结果类型

   Struts2提供了对应Servlet中请求转发和请求包含的操作;

Struts2的通配符和动态方法调用

 

Struts2之类型转换

 

以上是关于框架篇 -- Struts2的主要内容,如果未能解决你的问题,请参考以下文章

基础篇-三大框架之一(struts2框架的搭建)

SSH框架——Struts2篇

SSH框架——Struts2篇

SSH框架——struts2篇

Struts2之开山篇

Struts2初级篇(HelloWorld)