(一)什么是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. centos7.0 安装LNMP运行环境

    LNMP作为php流行的运行环境,而最近需要搭建一个内部的php论坛.记录下LNMP的安装: 1.安装mysql 请参考:centos7 安装mysql5.7.11注意事项 2.安装php yum i ...

  2. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

    在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平 ...

  3. 【leetcode】Binary Tree Maximum Path Sum (medium)

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  4. 【leetcode】Happy Number(easy)

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  5. 【python】classmethod & staticmethod 区别

    来源:http://blog.csdn.net/carolzhang8406/article/details/6856817 其他参考: http://blog.csdn.net/lovingprin ...

  6. JS图表插件(柱形图、饼状图、折线图)

    http://www.open-open.com/lib/view/open1406378625726.html

  7. js正则匹配以固定格式结尾的字符串并匹配是手机访问,则跳转

    <script> //var pcUrl = "http://res.meadin.com/HotelData/98986_1.shtml"; var pcUrl = ...

  8. springmvc注解配置

    <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s ...

  9. UITableView和UICollectionView的方法学习一

    参考资料 UITableView UICollectionView UICollectionViewDataSource UICollectionViewDelegate UICollectionVi ...

  10. NYOJ题目75日期计算

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAAInCAIAAADxjM2pAAAgAElEQVR4nO3dPVLjStsG4G8T5CyE2A