我所谓的使用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分类还是不太标准的.希望对你有点启发吧