自从上一篇之后,隔了好久才写这篇真是不好意思。下面我把这个MVC框架的剩余的最后一部分分享给大家。
MVC里面不仅需要action这样普通的控制器,还需要另外一种控制器:前端控制器 ActionServlet
ActionServlet 继承了传统的servlet,负责从创建应用命令控制器RequestProcessor,和创建XML解析器XmlParser,它如同打仗时的先锋队,“所有的请求”首先被它获取拦截,通过它和已知的配置文件就可以把请求发给对应的action,因此它在MVC模型中扮演中央控制器的角色。(其实和struts框架中的actionservlet的功能几乎一样)代码如下:
初始化的时候,我们需要解析xml并返回之前谈到过的ActionMappingConfig,并将其缓存到公共区域中,以便之后的读取。当然要想使这个servlet起作用还是需要在web。xml里面进行配置的,由于需要一开始就加载配置文件,所以说还要加上<load-on-startup>0</load-on-startup>;
上面涉及到RequestProcessor这个类,这个类在MVC小框架中充当命令应用控制器。 它负责创建和缓存Action对象,同时也根据请求path调用action对象,并创建ActionForm对象,将ActionForm传递到Action对象中。详细的RequestProcessor类的处理过程我总结如下:
1、获取请求路径。
2、根据请求路径查找缓存(可以用一个Hashtabel来当缓存)中是否有对应的action实例,如果没有将对应的action实例化出来。
3、若是刚实例的action则把Action对象缓存起来。
4. 根据actionconfig查找对应action的actionForm。
5. 反射设置参数到actionForm。
6. 传递ActionForm到Action,并调用execute方法。
7. 接受action的返回值。
8. 根据返回值决定重定向还是转发。代码如下:
上述代码的注释也把整个流程描述得十分清楚。有很多代码细节大家若不懂,百度一下就能知道,是一些很简单的小细节功能。
加上之前的类,一个简单的MVC框架就基本成型了。下面是简单的应用代码:
这个Action就继承了抽象类Action并对其中的execute方法进行重写。
这个form继承了actionform用来封装页面传来的参数。之前的mvc.xml配置如下:
项目运行起来之后,在页面输入http://127.0.0.1/项目名/index.do 请求就会被拦截并调用NewsAction中的execute方法。
(具体项目的具体设置不一样,struts框架原则上认为访问任何一个页面之前都需要通过一个控制器,之后再转发到对应的页面,因此我们用户在地址栏上输入的时候一般不会出现*.jsp这样的地址,而一般都是*.do或者*.action等等这样的地址)。
最后呢我们可以把之前的代码打成一个jar包(不包括NewsAction)。下次写一个新的web项目的时候我们就可以把这个jar包导入,自己建一个xml文件来写配置(和上面的配置文件一样),省去了写大量servlet配置的时间,这样的感觉就如同用一个框架,虽然这个框架很小,嘿嘿,总之算是实现了一个MVC框架的最最基本的功能。当然呢我这个框架还有很多很多的不足,其中我认为最大最大的不足呢是:
1.dispatcherAction里面的那个method参数不能自己配置,而是写死了,这样页面传递参数的时候会受到了限制。
2.没有像标准struts框架那样把转发重定向的路径 也配置到文件(如<result name="hello">/index.jsp</result>),这样有时候路劲变化的时候还是需要改变源代码,违背了开闭原则。
这个框架和标准的框架没得比,但是也把MVC的基本思想体现出来,在下分享出来后,希望大家多多交流,我也希望通过这个来学习更多的架构知识,当然本人的实力实在有限,文字表达功底也不大行,所有的不足,望大家包容。
那这样吧,嘿嘿!
分享到:
相关推荐
放寒假的时候写的一个像struts基本功能的框架!!!
自己写的MVC框架,功能完善,用来写一些小项目是绰绰有余了。实现了MVC三层架构,支持模块化设计,应用目录自动生成,命名空间自动加载到类,url mode,url路由等功能。感兴趣的朋友可以下载回去,一起探讨一起学习...
MVC框架
微信开发php+mvc框架
自己谢PHP MVC框架 从中了解MVC的各种调用,让你熟悉MVC
PHP MVC 说明文档
mvc框架最终版,该框架有点仿照struts,对学习struts以及mvc有很大的好处
这是一个关于mvc思想的框架,是一个用java实现servlet的一个mvc框架,有这方面需要的朋友,可以下载下来研究一下,可以自由评论
MVC框架自己写的一个新闻发布系统,前台,后台,各种功能都有
C++实现简单的MVC框架
https://blog.csdn.net/weixin_39934453/article/details/132242216PHP傻瓜也能搭建自己框架,手把手搭建一个mvc框架PHP最简单自定义自己的框架(一) PHP最简单自定义自己的框架创建目录结构(二) PHP最简单自定义...
一个的MVC框架实例,没有花哨的功能,代码简洁,代码有注释注释 ,代码具有很高的可读性。
ASP.NET MVC框架开发系列课程(1):MVC模式与ASP.NET MVC框架概述
使用PHP开发自己的MVC框架 站点其实很简单,一个ToDo程序。
这是一个完整的MVC框架,给刚接触MVC架构的同学或网站开发者了解MVC,记得要把根目录设计成myweb这个目录才可以过去。当然要在PHP的环境下。
一个自己写的轻量级的PHP框架,平时我用它写写简单的应用,适合PHP框架初学者.本框架额外包含了bootstrap前端开发框架.实现了ajax实时更新.有兴趣的php爱好者可以研究研究
山寨的一个MVC框架
MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码
puremvc 框架源码及教程, 附带一个使用示例 puremvc 框架源码及教程, 附带一个使用示例
php自己编写mvc框架