在上一篇的内容里,简单说了说框架的学习,主要讲解了什么是框架,框架的一些相关问题,还有就是如何学习框架。那么这篇博客介绍一些常见的框架的结构和分析。

我们所学习的技术框架有很多,例如struts1、struts2、JSF、Spring、SpringMVC、Hibernate、ibatis····在上篇博客我说了我们可能在开发的路途上会要学习这些框架,我也给出了我对框架学习的几点:


学校架构图模板 学校框架结构_测试

我们首先要看一下这个框架属于开发结构中的那一层。因为我们的开发都是要用分层的思想来做的,所以我们第一个就要看看我们开发分层中,各个层次之间有哪些框架。


学校架构图模板 学校框架结构_java_02

我们从图上看到了那些框架属于哪一层的(这里还有很多框架没有涉及到)。之后我们来看一些常用的框架(这个常用相对于个人而言,我这里所说的常用针对我自己来说,如果这里我没有介绍全的话,大家可以到相关的框架官网去查阅一下资料自主学习)。


下面我就简单的介绍一些我经常使用的框架的结构和一些分析:


Struts2框架(分为struts1和struts2):

一、Struts框架结构图:


学校架构图模板 学校框架结构_测试_03

优点:

1. Struts框架是一个基于mvc的框架,所以它继承了所有mvc的优点,例如:复用性好,团队开发分工明确,结构层次分明等

2. 给程序开发者在servlet层上节约了大量的开发时间,应用程序开发者不再去触及大量的servlet的编写,仅仅变换为配置文件。


二、Struts1框架

1.框架的结构图:


学校架构图模板 学校框架结构_struts_04

2. Struts1框架有五个常用对象:actionservlet、actionmapping、actionform、action、actionforward

a) Actionservlet是核心控制,URL 地址映射、ActionForm的匹配、 Action 的执行都需要这个类来进行导航

b) Actionmapping:它们可将请求URI映射到Action类,并且将Action类与ActionFormbean相关联

c) Actionform:收集表单数据

d) Action: 完成所需的业务逻辑,确定要跳转的页面

e) Actionforward:用来封装转发路径的


3. Struts1框架的执行流程:

1) 检索和用户匹配的ActionMapping实例,如果不存在,就返回请求路径无效的错误信息

2)如果ActionForm实例不存在,就创建一个ActionForm的对象,把客户提交的表单数据封装到ActionForm对象中。

3)根据配置信息决定是否要进行表单验证,如果需要,就调用ActionForm的validate()方法

4)如果validate()方法放回null,或者并不包含ActionMessage的ActionError对象,就表示验证成功

5) ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给那个action,如果相应的action实例不存在,就先创建这个action对象,然后再调用这个action的excute()方法

6)action的execute()方法返回一个ActionForword对象,ActionServlet会把客户请求转发给ActionForword对象所指向的JSP组件

7)ActionForword对象指向JSP组件生成动态网页返回给客户

学校架构图模板 学校框架结构_测试_05

4.优点:和struts框架的优点相同

5.缺点:

1) 表现层技术单一:仅能用jsp

2) 与servletAPI耦合性高,难于测试(httpservletrequest、httpservletresponse)

3) 严重依赖于ServletAPI(继承action,继承actionform),与struts1框架耦合性太高


这篇博客就写到这里,如果再写篇幅可能会过长,对读者的阅读造成负面影响,所以我会在下面的博客中陆续介绍我经常使用的框架,当然我也会在这些同层之间的框架的分析中加入各个框架的区别,当然在适当的地方会画一些图片来表示他们之间的知识关联性,希望读者能够我一些建议和意见。