(一)什么是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. Storm集成Kafka应用的开发

    我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果 ...

  2. 9.SpringMVC和json结合传递参数

    input的值一定要用.attribute来取值.val( )只能用可以看看开源社区jQuery的ajax请求.html():读取和修改一个元素的HTML内容,详情.html():.text():读取 ...

  3. 网页中超链接的简化问题(如何避免超链接的get提交)

    废话不多,直接看例子吧: <a href="###?key=${*** }">跳转</a> 上面这个超链接被点击后,肯定会向某个控制器发送一个get请求,而 ...

  4. ABAP 仓库理货单导出

    *&---------------------------------------------------------------------* *& Report   *& ...

  5. SVN客户端以及使用 for windows

    1.首先我们需要下载 "svn小乌龟"后,进行安装.比如我下载如下的: 安装完成后,比如在我的项目在qiandaun1中,我右键就可以看到如下: 说明snv已经安装成功了! 2:c ...

  6. HDU 4945 2048(dp)

    题意:给n(n<=100,000)个数,0<=a[i]<=2048 .一个好的集合要满足,集合内的数可以根据2048的合并规则合并成2048 .输出好的集合的个数%998244353 ...

  7. codeforces 500B.New Year Permutation 解题报告

    题目链接:http://codeforces.com/problemset/problem/500/B 题目意思:给出一个含有 n 个数的排列:p1, p2, ..., pn-1, pn.紧接着是一个 ...

  8. 【XLL API 函数】xlCoerce

    将 XLOPER/XLOPER12 转换为另一种类型,或是查询表格中的单元格值. 函数原型 Excel12(xlCoerce, LPXLOPER12 pxRes, 2, LPXLOPER12 pxSo ...

  9. php数据访问基础

    建一个连接(造一个连接对象) $db = new MySqli("IP地址或者域名,若果是本地则用localhost","用户名","数据库密码&qu ...

  10. Tmux的安装、使用与配置

    tmux 安装.使用.配置 因上线需求,故需要使用tumx,方便上线 tmux功能 提供了强大的.易于使用的命令行界面 可横向.纵向分割窗口 窗格可以自由移动和调整大小,或者直接利用四个预设布局之一 ...