Coldfusion MVC模式探索
Coldfusion MVC模式探索
Coldfusion MVC模式探索 我所谓的使用MVC模式其实是利用了cfmodule的嵌套调用特点.下面是MCV模式的图示:

我这里把应用页面文件当做view.然后按照栏目分类,每个栏目拥有自己的读取数据功能,那么这个就是model了,然后写一个.cfm文件作为调用文件(controller),按照不同的请求来调用不同栏目文件中的不同数据.
下面我给个简单的实例.因为我没有特地去做一个实例,所以只是程序上取下来的几段然后改了下.
view页
以下是代码片段:
<CFMODULE module='doc' template='action/cfmodule.cfm'>
<cfdump var='#Request.alldoc#'>
Request.alldoc是在model中已经定义好的一个数据集.
Controller页 :
以下是代码片段:
<cfparam name='Attributes.param1' type='string' default=''>
<cfparam name='Attributes.param2' type='string' default=''><!--- 来自路径 --->
<cfswitch expression='#Attributes.module#'>
<cfcase value='doc'><!--- 查看所有 Doc --->
<CFMODULE param1='viewall' template='CM_model.cfm'>
</cfcase>
<cfcase value='doc_add'><!--- 添加一个 Doc --->
<!--- 定义来自表单的数据 --->
<cfset REQUEST.add_id = #form.f_1#>
<cfset REQUEST.add_title = #form.f_2#>
<CFMODULE param1='addone' param2='form.xxx' param3='xxx' param4='xxx.cfm' template='CM_model.cfm'>
</cfcase>
</cfswitch>
doc和doc_add是两个判断常量.
model页:
以下是代码片段:
<cfparam name='Attributes.param1' type='string' default=''>
<cfparam name='Attributes.param2' type='string' default=''>
<cfparam name='Attributes.param3' type='string' default=''>
<cfparam name='Attributes.param4' type='string' default=''>
<cfswitch expression='#Attributes.command#'>
<!--- 处理Document --->
<cfcase value='viewall'><!--- 查看所有 Document ,返回collection --->
<cfquery name='getDoc' datasource='#Request.xxx#' username='#Request.xxx#' password='#Request.xxx#'>
SELECT * FROM xxxx **************省略**************
</cfquery>
<cfset Request.alldoc=getDoc>
</cfcase>
<cfcase value='addone'>
<cfquery name='getDoc' datasource='#Request.xxx#' username='#Request.xxx#' password='#Request.xxx#'>
INSERT INTO xxx
SET xxx = ’#REQUEST.xxx#’
*****************省略******************
</cfquery>
</cfcase>
</cfswitch>
如代码所见,我在几个模块中都使用request传递.request在Coldfusion中的功能类似一个对象,其作用域为当前页面(seesion是当前浏览器),感觉简直是为这个应用量身定做的.由于使用的是cfmodule,所以在application.cfm中定义的值我也都用上了request.这个模式的应用会造成一定速度的缓慢,但是优点是显而易见的,至少我可以做到没有一个生成页可以看到我的controller所在的位置,而model则藏得更好,不过其他的相关安全措施该防备的还是要防备的.呵呵.这是我在最近的网站开发过程中做得写尝试,并且已经成功运用.当然我这里的MVC分类还是不太标准的.希望对你有点启发吧