深入浅出Struts2
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的更多相关文章
- 深入浅出Struts2+Spring+Hibernate框架
一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...
- struts2源码调试环境的搭建
源码之前,了无秘密. 说一句逼格很高的话来镇镇场子. 这两天在看陆舟的<Struts2技术内幕>,一边看脑子一边冒出四个字:相见恨晚.极力推荐想了解Struts2的人看看这本书,之前一直在 ...
- [置顶] 通过实例学习Struts2 (1)
前言 一直用Struts1 , 现在新的项目要转向Struts2了, 先研究学习一下,做点技术储备. 我一直认为计算机软件行业是一个实践性非常强的行业,书读了多少都不管用, 一定要卷起袖子,亲自动手, ...
- 三年所有JAVA技术文档列表
学习工作流workflow管理基础概念.pdf 深入浅出Struts2(PDF).zip 深入浅出Hibernate.pdf 敏捷软件开发:原则.模式与实践.rar 精通Oracle.10g.Pl.S ...
- 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- Struts2.X深入浅出 学习笔记
第一节.MVC以及Struts2简介 第二节.Action生命周期以及接收表单数据 第三节.Struts2配置以及Struts.xml详解 Struts2 主要配置文件 Web.xml 设置过滤器以及 ...
- Struts2的值栈和对象栈
ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContex ...
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
笔者不知道该用哪个词来形容ValueStack.ActionContext等可以在Struts2中用来存放数据的类.这些类使用的范围不同,得到的方法也不同,下面就来一一介绍. 声明:本文参考Strut ...
- 升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)
Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系 ...
随机推荐
- 深入理解 C 指针阅读笔记 -- 第五章
Chapter5.h #ifndef __CHAPTER_5_ #define __CHAPTER_5_ /*<深入理解C指针>学习笔记 -- 第五章*/ /*不应该改动的字符串就应该用 ...
- 广东工业大学2016校赛决赛-网络赛 1169 Problem A: Krito的讨伐 优先队列
Problem A: Krito的讨伐 Description Krito终于干掉了99层的boss,来到了第100层.第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点 ...
- 似然函数(likelihood function)
1. 似然函数基本定义 令 X1,X2,-,Xn 为联合密度函数 f(X1,X2,-,Xn|θ),给定观测值 X1=x1,X2=x2,-,Xn=xn,关于 θ 的似然函数(likelihood fun ...
- 循环引用的weak和assgin
__weak 当对象销毁后weakSelf指向的地址为nil __unsafe_unretained 挡圈对象销毁后,weakSelf执行的地址为不变,而地址对应对象已经销毁,再次访问该对象就崩溃,相 ...
- Flask-Restful
定义Restful的视图 安装:pip install flask-restful 如果使用Flask-restful,那么定义视图函数的时候,就要继承flask_restful.Resourse类, ...
- ROS常用知识指南
前言:介绍一些基础常用的知识. 一.标准单位 二.坐标表现方式 三.默认安装位置 通过apt-get安装的软件包, 默认安装位置为:/opt/ros/kinetic/share 四.软件包安装流程 4 ...
- Ubuntu下推荐安装软件
前言:都是全平台软件,通用性好. 1.搜狗输入法 官网下载: 不能双击.deb安装成功,需要安装依赖,可参考:https://www.cnblogs.com/chendeqiang/p/1017741 ...
- 基于Redis实现分布式应用限流--转
原文地址:https://my.oschina.net/giegie/blog/1525931 摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限 ...
- 利用IOC—— Castle进行对象映射,以及结合Nhibernate访问数据库
相信很多人对IOC这个概念并不陌生,简而言之其核心就是利用反射来创建对象来实现解耦. 具体这么做解耦的好处是什么,因为鄙人做的项目还不多,所以还没体会到. 但好的项目大概是这样的 就是实现“高内聚,低 ...
- ubuntu16.04 安装 go
1,下载go安装包wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz 2,解压 sudo tar -C /usr ...