Struts2的介绍

制作人:全心全意

Struts引用的是MVC(Model-View-Controller,模型-视图-控制器)设计理念。目前,JavaWeb应用MVC设计理念的框架有很多,如Struts、JSF、Tapestry、Spring MVC等,Struts框架的应用最为广泛。

Struts框架目前拥有两个主要的版本,分别为Struts1.x版本与Struts2.x版本。

2001年6月发布了Struts1版本,其MVC架构如下图所示:

在Struts1的MVC架构中,各层结构功能如下:

控制器:在Struts1的MVC架构中,使用中央控制器ActionServlet充当控制层,将请求分发配置在配置文件struts.cfg.xml中,当客户端发送一个HTTP请求时,将由Struts的中央控制器对请求进行分发处理,在处理之后,返回ActionForward对象将请求转发到指定的JSP页面,对客户端进行回应。

模型:模型层主要由Struts中的ActionForm及业务Java Bean实现,其中ActionFrom对象对表单数据进行封装,它能够与网页表单进行交互并传递数据;业务Java Bean用于处理真正的业务请求,由Action进行调用。

视图:视图主要指用户看到并与之交互的界面,即Java Web应用程序的外观。在Struts1框架中,Struts提供的标签库增强了JSP页面的功能,并通过Struts标签库与JSP页面实现视图层。

相对于Struts1框架而言,Struts2是一个全新的框架,Struts2的结构体系与Struts1的结构体系有很大的区别。

Struts2框架是在WebWork框架的基础上发展而来的,它是WebWork技术与Struts技术的结合,在WebWork中,Action对象不再与Servlet API向耦合,它可以在脱离Web容器的情况下运行,而且还提供了自己的IoC(Inversion of Control)容器增强了程序的灵活性,通过控制反转使程序测试更加简单。其结构体系如下图所示:

Struts2通过过滤器拦截要处理的请求,当客户端发送一个HTTP请求时,需要经过一个过滤器链,这个过滤器链包括ActionContextClearUp过滤器、其他Web应用过滤器及StrutsPrepareAndExecuteFilter过滤器,其中StrutsPrepareAndExecuteFilter过滤器是必须要配置的。

当StrutsPrepareAndExecuteFilter过滤器被调用时,Action映射器将查找需要调用的Action对象,并返回Action对象的代理。接下来Action代理将从配置管理器中读取Struts2的相关配置(struts.xml),读取完成后,Action容器调用指定的Action对象,在调用Action对象之前需要经过Struts2的一系列拦截器。拦截器与过滤器的原理相似,从结构图中可以看出它的两次执行顺序是相反的。

当Action处理请求后,将返回相应的结果视图(JSP、FreeMarker等)在这些视图中可以使用Struts标签显示数据及对数据逻辑方面的控制,最后HTTP请求回应给浏览器,在回应的过滤中同样经过过滤器链。

Struts的官方网站是https://struts.apache.org,在该网站上可以获取Struts的所有版本及帮助文档。

开发Struts2项目常见需要的类库文件:

struts2-core:Struts2的核心类库

xwork-core:Xwork的核心类库

ognl:Ognl表达式语言类库

commons-logging:Log4j日志支持类库

freemarker:Freemarker模板语言支持类库

commons-io:处理IO操作的工具类库

commons-fileupload:文件上传支持类库

Struts2的介绍的更多相关文章

  1. Struts2 入门介绍(一)

    一.什么是Struts2 1.Struts2是一个开发框架,应用于JavaEE三层架构中的web层. 2.Struts2框架是在Struts1和webwork基础上发展的一个全新的框架. 3.Stru ...

  2. struts2基本介绍

    前言 文本 Struts2 Apache SoftWare Foundation Tomcat/Struts1/Struts2/Ibaitas/ MVC框架:Struts1/Struts2/JSF/W ...

  3. struts2总体介绍

    这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高.当今比较流行的开源框架: 关注数据流程的MVC框架 (Struts1/2, WebWork, Spring MV ...

  4. Struts2体系介绍

    回顾Struts2,在会用基础上重看的理解. Struts 2框架架构流程 一个请求在Struts 2框架中的处理大概分为以下几个步骤. (1) 客户端提交一个HttpServletRequest请求 ...

  5. Struts2入门介绍(二)

    一.Struts执行过程的分析. 当我们在浏览器中输入了网址http://127.0.0.1:8080/Struts2_01/hello.action的时候,Struts2做了如下过程: 1.Stru ...

  6. Struts2(1) —— 概述

    1.Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发,框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2.Struts2框架的流程原理 ...

  7. (一)问候Struts2

    第一节:Struts2 简介 主页:http://struts.apache.org/在用户请求和模块化处理方面以及页面的展现这块,Struts2 发挥的屌炸天作用:相对于传统的Jsp+Servlet ...

  8. 初窥struts2(二)OGNL表达式

    Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤 ...

  9. Struts2框架学习(一)

    Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...

随机推荐

  1. Cocos2d-x 3.2编译生成Android程序出错Error running command, return code: 2的解决方法

    用Cocos2d-x 3.2正式版创建项目,结果使用cocos compile -p android编译生成APK程序,结果悲剧了,出现以下错误. Android NDK: Invalid APP_S ...

  2. luogu 1966 火柴排队

    题目大意: 两列数,可以交换每列中相邻的两个数,算作一次交换 求最小的交换次数使两列数相对应的数之差的平方之和最小 思路: 首先可以明确当两列数的排序位置相对应时,为最佳答案 然后我们按照一中排序后在 ...

  3. [Codeforces Round 486A] Fair

    [题目链接] https://codeforces.com/contest/986/problem/A [算法] 用dist(i,j)表示第i种食物运到第j个城市需要的最小代价 将所有特产为第i中食物 ...

  4. 【HDU 5698】 瞬间移动

    [题目链接] 点击打开链接 [算法] 用f[i][j]表示走到(i,j)这个位置有多少种方案,因为走到(i,j)这个位置,上一步一定在它左上角的矩形中,所以, f(i,j) = sigma( f(x, ...

  5. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1;   SELECT a FROM ...

  6. Vue Router过渡动效

    <router-view> 是基本的动态组件,所以我们可以用 <transition> 组件给它添加一些过渡效果: <transition> <router- ...

  7. [Swift]二分法的两种方式

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. [App Store Connect帮助]三、管理 App 和版本(6.3)转让 App:接受 App 转让

    您必须在转让发起的 60 天内接受转让. 必要职能:“帐户持有人”职能.请参见职能权限. 以具有“帐户持有人”职能用户的身份登录至 App Store Connect. 系统会显示一条通知,指示 Ap ...

  9. CSS3常用知识点

    CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...

  10. 倒计时,短信发送后倒计时效果js

    <div class="input-group-addon"><a style="width: 100%;height: 100%" href ...