深入浅出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实现了一个分布式文件系 ...
随机推荐
- 去哪网实习总结:JavaWeb中文传參乱码问题的解决(JavaWeb)
本来是以做数据挖掘的目的进去哪网的.结构却成了系统开发... 只是还是比較认真的做了三个月.老师非常认同我的工作态度和成果... 实习立即就要结束了,总结一下几点之前没有注意过的变成习惯和问题,分享给 ...
- 宝马男砍人不慎刀落反被杀 防卫过当or故意伤害(在生命受到威胁的情况下,已经很难判断对方意图了,而且假如于莫是老弱妇幼,可能现在死的就是于莫了)
如果被砍的是周律师他就不会说是防为过当吧,宝马车主跑回自己的车边时最危险,不知道他车上还有什么刀枪之类的.这如果判防卫过当,恶人会更恶,老实人连防卫都不敢了. 不知道在这个没有法治的国家会是如何判案的 ...
- HTML5游戏实战之20行代码实现打地鼠
之前写过一篇打地鼠的博客70行的代码实现打地鼠游戏,细致思考过后,发现70行代码都有点多余了,应用tangide的控件特性,能够将代码量缩减到20行左右. 先show一下终于成果,点击试玩:打地鼠.或 ...
- iOS~判断应用是否有定位权限
在特定场景下我们需要判断用户是否允许应用获取定位权限 1.导入类库: #import <CoreLocation/CLLocationManager.h> 2.判断用户手机是否开启了定位服 ...
- 利用DBMS_SQLTUNE优化SQL
DBMS_SQLTUNE优化SQL是在oracle10g才出来的新特性,使用它能很大程度上方便对sql的分析和优化.执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限: stat& ...
- WebApi在MVC 4中一个Controll多个post方法报错处理
http://blog.csdn.net/lqh4188/article/details/53542400(原创)
- 【转】JS回调函数--简单易懂有实例
JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...
- string 去除空格
/** * 去除空格 * @param {str} * @param {type} * type: 1-所有空格 2-前后空格 3-前空格 4-后空格 * @return {String} */ ...
- 懒人npm运行和打包命令
源码: @echo off&setlocal EnableDelayedExpansion & color 3e :start title npm 常用命令 by:ceet@vip.q ...
- 伍、ajax
一.ajax的概念 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新 ...