【SSH】 之 Struts
(一)什么是Struts,Struts是什么?
Struts是学习轻量级J2EE框架所必须要了解的一个框架,也是我们当前最最流行的三大框架(SSH——Struts,Spring,Hibernate)之一。struts是一个开源框架,帮助我们使用mvc设计模式来开发web应用,它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑
(二)Struts的框架结构图:
(三)Struts的工作机制、原理:
其实,有了我们的struts的框架结构图,她的工作机制也就完全明了了。
1、客户端浏览器发出http请求
2、根据web.xml配置,该请求被FilterDispatcher过滤
3、根据struts.xml配置,找到需要调用的Action类和方法
4、Action调用业务逻辑组建处理业务逻辑
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果并跳转到相应页面
6、返回http响应到客户端浏览器
(四)Struts的功能:
1、Struts提供了一个过滤器调度程序,程序员不必再自己写
2、Struts使用了一个基于XML的配置文件来匹配URI和动作。因为XML文档是文本文件,所以对应用称序的许多改动不用再进行重新编译
3、对动作类进行实例化和提取用户输入去填充各有关动作属性的工作都有Struts负责。如果程序员没有制定一个洞里左肋,Struts将对一个默认的动作类进行实例化,也就是我们定义的Default
4、Struts可以对用户输入提供一些基本的合法性验证,并在遇到不合法的数据是自动的把用户重定向到相关的数据表单。输入验证是一个可选环节,并且可以选择已变成方式或申明方式来实现。在此基础上,Struts还提供了许多种内建的输入验证程序。
5、Struts负责调用动作方法,而程序员可以通过配置文件来轻而易举地改变某个动作的方法。
6、Struts负责检查各个动作的结果和执行该结果。最常见的结果类型的好iDispatcher,其含义是把控制权转交给一个JSP页面。此外,Struts还支持其他的一些结果类型供程序员做其他事情,比如生成一个PDF文件,重定向到一个外部资源,发送一条消息等等。
7、Struts还提供一些其他共嗯那个,比如用来显示数据的定制标签、数据转化、支持Ajax、支持国际化和本地化、可以通过插件对Struts进行扩展等等
(五)为什么要使用struts:
为我们为什么要用struts进行web应用的开发,是因为我们发现了很多他的优点:
1、它是建立在MVC这种公认的好的模式上的,Struts在M、V、C上都有涉及,但是他主要是提供一个好的控制器和一套定制的标签库上,也就是说他的重心在Controller和View上。所以,可以说他天生就有MVC所带来的一些列特性优点,结构层次分明、可重用性高、增加了代码的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化等等;
2、Struts是一个开源项目,得到了包括他的发明者Craig R.McClanahan在内的一些高级程序是的跟进探索,并且功能越来越强大,体系也越来越完善
3、还是因为他是一个开源项目,能让开发者更加深入地了解其内部实现机制和原理
4、提供Exception处理机制,能让开发人员更好的管理系统异常
5、数据库连接池管理,是的开发人员个加关注业务逻辑的实现,而不必关心与数据库的链接
(六)struts的缺点
没有最好,只有更好,Taglib标签库对于初学者来说,需要耗费大量时间去学习,而对于成熟的开发者来说,甚至可能会改变程序员的开发习惯,无形中增加了开发成本,除此之外,Struts在实现MVC的基础上,把MVC控制层分为ActionForm、Action、ActionServlet三部分,虽然更加清晰的分解了系统结构,但是着实增加了复杂度
- 顶
【SSH】 之 Struts的更多相关文章
- SSH(struts+spring+hibernate)常用配置整理
SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...
- 用eclipse搭建SSH(struts+spring+hibernate)框架
声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...
- SSH(Struts+spring+hibernate)配置
1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...
- SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)
软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...
- ssh整合--struts
一 struts(jar+web.xml+struts.xml+Action) 1import min_jars-------struts-2.3.20.3-all(struts2-blank.war ...
- SSH(Struts Spring Hibernate开发框架)
Spring(Model) Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦. Struts(View) 使用Struts ...
- Spring学习8-用MyEclipse搭建SSH框架 Struts Spring Hibernate
1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...
- SSH骨架Struts(1)——Struts执行过程
收养Struts骨架Web应用,以举例的方式介绍的基本流程. 一.实例 Login.jsp,进行系统登录的页面 <form action="login.do" method= ...
- 【SSH 基金会】SSH框架--struts进一步的详细解释(两)
继上篇博客 既然我们知道了不使用struts给我们带来这么多弊端,那么以下我们来看看struts是怎样封装的.怎么解决我们出现的问题的? 先来说一下struts的基本流程,帮助大家理解以下的代码: S ...
- SSH配置struts校验发生No result defined for action actions.AdminLoginAction and result input
配置struts校验发生No result defined for action actions.AdminLoginAction and result input,但是登录,success.jsp, ...
随机推荐
- NGUI图片闪光
先上效果 Shader Shader "Unlit/Transparent Colored Flow Texture" { Properties { _MainTex (" ...
- Unity3d 保存和使用地形高度
TerrainHeightProcesser 地形高度存储工具 TerrainHeightData 地形高度数据 // class TerrainHeightProcesser using Unity ...
- vs2013 控制台程序exe图标
工程右击选择添加resource->Icon. 在工程目录就会生成 工程名.rc 和 XX.ico文件. 重新编译程序,就会生成有图标的exe. 对应的配置在 工程名.rc 文件里,用记事 ...
- Java for LeetCode 232 Implement Queue using Stacks
Stack<Integer> stack=new Stack<Integer>(); public void push(int x) { stack.push(x); } // ...
- SAP 凭证类别
文章摘要:基本分为收.付.转三类,和传统的会计凭证分类一样.SA,总帐凭证.(转帐凭证)KA,供应商凭证.(付款凭证)KR,应付供应商凭证.(付款凭证)KG,供应商转来的红字发票,SAP称为贷方凭证. ...
- HDU 1000 & HDU1001 & 字符串连接
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 【python】正则中的group()
来源:http://www.cnblogs.com/kaituorensheng/archive/2012/08/20/2648209.html 正则表达式中,group()用来提出分组截获的字符串, ...
- Java堆、栈和常量池以及相关String的详细讲解
一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...
- 绿色通道(codevs 3342)
题目描述 Description <思远高考绿色通道>(Green Passage, GP)是唐山一中常用的练习册之一,其题量之大深受lsz等许多oiers的痛恨,其中又以数学绿色通道为最 ...
- lsof
lsof `which httpd` //那个进程在使用apache的可执行文件 lsof /etc/passwd //那个进程在占用/etc/passwd lsof /dev/hda6 //那个进程 ...