Struts2简单介绍

Struts 2框架作为Struts 1.X框架的替代技术,相对Struts 1.X来说,有着本质上的改变。 Struts 2框架是从WebWork框架发展而来的.Apache Struts 2即是大家之前所熟悉的webwork2.随着各自的发展。webwork和Struts社区决定将二者合并为Struts2,新版本号的Struts与曾经版本号一样更易于使用。从某种程度上来讲。Struts2没有继承Struts1的血统,而是继承了webwork的血统而且吸收了Struts1和webwork两者的优势。所以说Struts2并非一个全新的框架。

mvc设计模式

谈到Struts就不得不谈谈mvc设计模式。mvc设计模式是一种眼下广泛应用的软件设计模式。随着网络应用的高速发展,应用变得越来越复杂,mvc设计模式为应用模型提供了最主要的分析方法。为构造产品提供了清晰的设计框架,为软件project提供规范的根据。

    mvc设计模式将应用程序划分为模型层、视图层、控制器。



     
模型层包含业务逻辑和数据訪问层,在整个mvc模型中Model部分就是业务流程或状态的处理以及业务规则的制定。能够说是mvc中最重要的部分。

    视图。一个web项目中可能有非常多不同的视图,mvc设计模式对于视图的处理仅限于视图上数据的採集和处理以及响应用户的请求。而不包含在视图上的业务流程的处理。

控制器,控制器在视图层与业务逻辑层之间起到了桥梁作用,控制了两者之间的数据流向。

当用户请求从V部分传到控制器时,控制器调用对应的模型层在控制器中进行处理。控制器再将处理结果转发给适当的视图层。循环进行此过程。



mvc工作流程:

    1.用户的请求提交给控制器

    2.控制器受到用户请求后依据用户的详细需求,调用对应的模型(javabean或者EJB)来处理用户请求。

    3.控制器调用模型层进行数据处理后,依据处理结果进行下一步的跳转,如跳转到还有一个视图或其它控制层。



struts2工作原理

Struts2是基于mvc设计模式的java web框架技术之中的一个,Struts2框架依照mvc的设计思想把java web 应用程序分为:控制层(核心控制器和业务控制器)、模型层(业务逻辑组件和数据库訪问组件)、视图层(包含HTML、JSP、Struts2的表签)。









          1.客户提交请求道server

        2.请求被提交到一系列的过滤器或者拦截器。最后到达FilterDispather

        3.FilterDispather读取配置文件struts.xml。依据配置信息调用某个Action来处理客户请求。

        4.Action处理后。返回结果,FilterDispather依据struts.xml的配置找到相应的页面跳转。

核心控制器

Struts2的成功因素之中的一个在于核心控制器FilterDispather。该控制器作为一个过滤器执行在java web项目中,负责拦截全部用户请求,当用户请求到达时,该过滤请求会过滤用户请求。FilterDispather负责四个方面的功能:

   (1)运行Actions

   (2)清除ActionContext

   (3)维护静态内容

   (4)清除request生命周期内的XWork的interceptors



业务控制器

Struts2的成功的还有一个因素在于Action业务逻辑控制器。

开发基于Struts2的java web 应用项目时,Action是数据处理的核心,须要编写大量的Action类,并在struts.xml文件里配置Action。

Action类中包括了对用户请求的处理逻辑,因此也把Action称为Action业务控制器。它是用户请求和业务逻辑之间的桥梁,每一个Action充当客户的业务代理。



总结

Struts2紧紧环绕两大核心控制器,做到了依据请求的參数转发请求给适当的控制器、在控制器中调用业务接口、将业务接口返回的结果包装起来发送给指定的视图,并由视图完毕处理结果的展现。使得开发模块化、减少耦合、更易于扩展。当然Struts2的一些细节优点就更不用说了,比如获取表单内容,并组织生成參数对象、易于扩展的插件机制。

深入浅出Struts2的更多相关文章

  1. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

  2. struts2源码调试环境的搭建

    源码之前,了无秘密. 说一句逼格很高的话来镇镇场子. 这两天在看陆舟的<Struts2技术内幕>,一边看脑子一边冒出四个字:相见恨晚.极力推荐想了解Struts2的人看看这本书,之前一直在 ...

  3. [置顶] 通过实例学习Struts2 (1)

    前言 一直用Struts1 , 现在新的项目要转向Struts2了, 先研究学习一下,做点技术储备. 我一直认为计算机软件行业是一个实践性非常强的行业,书读了多少都不管用, 一定要卷起袖子,亲自动手, ...

  4. 三年所有JAVA技术文档列表

    学习工作流workflow管理基础概念.pdf 深入浅出Struts2(PDF).zip 深入浅出Hibernate.pdf 敏捷软件开发:原则.模式与实践.rar 精通Oracle.10g.Pl.S ...

  5. 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式

    现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...

  6. Struts2.X深入浅出 学习笔记

    第一节.MVC以及Struts2简介 第二节.Action生命周期以及接收表单数据 第三节.Struts2配置以及Struts.xml详解 Struts2 主要配置文件 Web.xml 设置过滤器以及 ...

  7. Struts2的值栈和对象栈

    ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContex ...

  8. 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .

    笔者不知道该用哪个词来形容ValueStack.ActionContext等可以在Struts2中用来存放数据的类.这些类使用的范围不同,得到的方法也不同,下面就来一一介绍. 声明:本文参考Strut ...

  9. 升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)

          Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系 ...

随机推荐

  1. 2015 Multi-University Training Contest 2 1006 Friends 壮压

    题目链接 题意:t 组測试数据,每组測试数据有 n个人,m条关系 每条关系能够是 "线上关系" 或者 "线下关系". 要求每一个人的线上关系(条数) == 线下 ...

  2. bzoj3998: [TJOI2015]弦论(SAM+dfs)

    3998: [TJOI2015]弦论 题目:传送门 题解: SAM的入门题目(很好的复习了SAM并加强Right集合的使用) 其实对于第K小的字符串直接从root开始一通DFS就好,因为son边是直接 ...

  3. Swift - 制作一个在线流媒体音乐播放器(使用StreamingKit库)

    在之前的文章中,我介绍了如何使用 AVPlayer 制作一个简单的音乐播放器(点击查看1.点击查看2).虽然这个播放器也可以播放网络音频,但其实际上是将音频文件下载到本地后再播放的. 本文演示如何使用 ...

  4. 智课雅思词汇---十三、前缀ab-是什么意思

    智课雅思词汇---十三.前缀ab-是什么意思 一.总结 一句话总结:分离,脱离;相反;加强意义 前缀:ab- [词根含义]:分离,脱离;相反;加强意义 [词根来源]:来源于拉丁语前缀ab-. [同源单 ...

  5. webstorm配置Monokai-Sublime.jar主题

    https://github.com/OtaK/jetbrains-monokai-sublime 导入下载的Monokai-Sublime.jar jar包即可使用.

  6. docker compose的使用--在线安装未完成

    Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务 ...

  7. js 转化为几天前,几小时前,几分钟前...

    转换标准时间为时间戳: function getDateTimeStamp(dateStr){ return Date.parse(dateStr.replace(/-/gi,"/" ...

  8. BZOJ 2141 分块 线段树

    思路: a[i] //By SiriusRen #include <cmath> #include <cstdio> #include <cstring> #inc ...

  9. BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP

    终于是道中文题了.... 当时考试的时候就考的这道题.... 果断GG. 思路: 因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点. 随后就进行一遍树形DP就好了.. x表示当前的节点.j表 ...

  10. Linux中设置vim自动在运算符号两边加上空格

    vim中设置自动在=+-之类的运算符号左右两边加上空格.原版的vim不带这个功能,写出的代码例如z=x+y,不美观,很多编译器(如VS)能够自动在符号两边加上空格,如z = x + y,看起来比较美观 ...