(一)什么是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三部分,虽然更加清晰的分解了系统结构,但是着实增加了复杂度

 

最新文章

  1. SpringMVC操作指南-登录功能与请求过滤
  2. 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他
  3. 多组 RadioButtonList 获取值
  4. .net常見面試題(四)
  5. The method of type must override a superclass method解决方式
  6. QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
  7. POJ1422 最小路径覆盖入门
  8. java中常用的并发工具类
  9. Java IO(Properties/对象序列化/打印流/commons-io)
  10. 《java入门第一季》之UDP协议下的网络编程小案例
  11. Node.js目录
  12. Apace、Ngnix、Tomcat三者关系
  13. Django _VIEW视图_源码分析
  14. [译]Kubernetes 分布式应用部署和人脸识别 app 实例
  15. zyb的面试
  16. centos7配置vsftpd
  17. sublime插件开发手记
  18. python接口自动化-参数化
  19. c 宏的定义
  20. docker的搭建和简单应用

热门文章

  1. 11. javacript高级程序设计-DOM扩展
  2. iOS MD5加密实现方法
  3. MST:Out of Hay(POJ 2395)
  4. eclipse修改jdk后版本冲突问题
  5. 【leetcode】Decode Ways(medium)
  6. [转帖]海森矩阵(Hessian matrix)
  7. IOS-Gesture(手势识别)
  8. PHP工厂模式的研究
  9. iOS注册collcetionViewFlowLayout
  10. 方法重载的小demo