struts1是如何实现MVC的

转自:http://blog.csdn.net/yxflovegs2012/article/details/52506109 来,补补理论知识:

        Struts是对MVC模式实现的一个Web应用框架。MVC的工作原理我们都很熟悉那么struts是如何实现这一模式思想的呢?(本文中介绍到的是struts1中的实现原理)

        首先我们知道MVC分为View——controller——Model,在struts2中也是如此只是实现的流程不同而已。

        首先先来一个整体的调用关系图:

MVC思想实现:

        Web端发出请求后ActionServlet截取请求的URL,根据struts-config.xml配置文件调用相应的action。这一过程相当于是controller负责页面请求和业务逻辑的桥接。

Action调用相应的model和数据库交互完成后返回数据。这一过程相当于是model的作用。

数据返回后再次由ActionServlet进行页面的匹配将数据展示到View。

 

       大致的流程如上描述,那么具体到代码中整个流程是如何实现的呢,三层之间数据的传递是否也是有实体model完成的呢?在此需要了解struts1中三个重要的概念:ActionForm、ActionMapping、ActionForward。

 

ActionFrom:

        保存和传递数据,相当于我们所熟知的model实体类。在使用中可以对应我们的数据库字段类型建model实体一样建立多个ActionForm也可以建立一个动态的ActionForm。

 

ActionMapping:

       用来保存struts-config.xml中某一个action的所有配置信息的。对ActionServlet来说是一个重要的对象。几乎所有的配置信息都是通过ActionMapping读取的。

 

ActionForward:

       封装转发信息,通过它可以转发或重定向到指定的页面上。

 

        那么在具体的流程中以上三者又是怎样被使用的呢,先来看整体详细的流程图:

        由图可以知道当Web端请求ActionServlet接受到请求后会调用RequestProcessor类中的Process方法,这是一个request的处理器类,request可以携带web端几乎所有的请求信息。

        1、首先processPath方法会截取请求的URL,根据截取到的URL到struts-config.xml中读取相应的action配置。

        2、根据截取的URL调用processMapping方法,将action配置的信息转换为ActionMapping对象。

        3、调用processActionForm方法,可根据ActionMapping对象中的name值查找到配置的ActionForm然后实例化一个对象设置到request或session中。

        4、ActionForm被实例化后会调用processPopulate方法,这个方法是将web端的数据设置到ActionForm对象的,根据的是web输入域中的name进行匹配的。

        5、实体model创建完毕后接着就会调用ProcessActionCreate方法,看方法名就能知道这是要创建Action了,根据的还是ActionMapping中的信息。如果Action已经存在直接返回,如果不存在就会根据完整的类路径采用反射机制创建action。

        6、现在实体类、action都已经存在剩下的就是执行我们写的代码。processActionPerform就会调用我们自己在action中写的execute方法,方法执行完毕返回的是ActionForward对象,最后调用processForwardConfig方法完成转向。

 

小结

       Struts1实现MVC的整体流程就是这样的,主要的控制是通过配置文件来完成的,那么想用使用struts1这样的框架具体的应该怎么做,下篇博客我们开启实践模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值