(一)什么是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的更多相关文章

  1. SSH(struts+spring+hibernate)常用配置整理

    SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...

  2. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  3. SSH(Struts+spring+hibernate)配置

    1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...

  4. 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 整合 ...

  5. ssh整合--struts

    一 struts(jar+web.xml+struts.xml+Action) 1import min_jars-------struts-2.3.20.3-all(struts2-blank.war ...

  6. SSH(Struts Spring Hibernate开发框架)

    Spring(Model) Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦. Struts(View) 使用Struts ...

  7. Spring学习8-用MyEclipse搭建SSH框架 Struts Spring Hibernate

    1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...

  8. SSH骨架Struts(1)——Struts执行过程

    收养Struts骨架Web应用,以举例的方式介绍的基本流程. 一.实例 Login.jsp,进行系统登录的页面 <form action="login.do" method= ...

  9. 【SSH 基金会】SSH框架--struts进一步的详细解释(两)

    继上篇博客 既然我们知道了不使用struts给我们带来这么多弊端,那么以下我们来看看struts是怎样封装的.怎么解决我们出现的问题的? 先来说一下struts的基本流程,帮助大家理解以下的代码: S ...

  10. 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, ...

随机推荐

  1. 用普通用户通过sudo进行启动tomcat时报如下异常

    用普通用户通过sudo进行启动tomcat时报如下异常 tomcat user 不在 sudoers 文件中.此事将被报告. 这是由于sudo命令使用root用户执行命令.而处于安全性的考虑,一般不允 ...

  2. ACM/ICPC 之 Bellman Ford练习题(ZOJ1791(POJ1613))

    这道题稍复杂一些,需要掌握字符串输入的处理+限制了可以行走的时间. ZOJ1791(POJ1613)-Cave Raider //限制行走时间的最短路 //POJ1613-ZOJ1791 //Time ...

  3. Effective C++ -----条款40:明智而审慎地使用多重继承

    多重继承比单一继承复杂.它可能导致新的歧义性,以及对virtual继承的需要. virtual继承会增加大小.速度.初始化(及赋值)复杂度等等成本.如果virtual base classes不带任何 ...

  4. Ditto - Windows剪贴板增强小工具,方便复制粘贴多条记录

    在平时的工作中,好多地方需要重复的复制粘帖一些重复性的代码,频繁的Ctrl+C.Ctrl+V导致效率很低,而且时间长了会很烦,Windows自带的剪切板功能一次只能进行一条记录操作,单一的不行,与提高 ...

  5. poj 1102.LC-Display 解题报告

    题目链接:http://poj.org/problem?id=1102 题目意思:就是根据给出的格式 s 和 数字 n,输出数值 n 的 LCD 显示.数值 n 的每个数字要占据 s + 2 列 和 ...

  6. mybatis延迟加载

    配置完成后可能会报错Cannot enable lazy loading because CGLIB is not available. Add CGLIB to your classpath 是由于 ...

  7. Volley与XUtils网络请求使用对比,心得,两者基本使用

    之前一直使用的Volley作为网络请求框架,它是Google 在2013年的I/O大会 上,发布的.Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮,同时扩展性很强.在 ...

  8. 最详细的 Android Toolbar 开发实践总结

    http://www.codeceo.com/article/android-toolbar-develop.html     参考此链接!

  9. Mac怎么读写NTFS格式?Mac读写NTFS格式硬盘教程

    我们都知道NTFS 格式的 Windows 硬盘在Mac OS X系统下只能读取不能写入,这一问题一直困扰着很多新老Mac 用户,一般的的解决办法就是安装 NTFS 插件来让 OS X 支持 NTFS ...

  10. CodeForces 282C(位运算)

    C. XOR and OR time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...