Okay... I thought I understood your question, RockyRoad, but after reading the responses I think maybe I'm missing something.
You're asking how to set up a single CFM page with a form so that it submits to itself, and, following that, how to tell that the form's been submitted so you can act on it, right?
If so, as you say, it's relatively easy. The key is realizing that the value of the submit button is passed as one of the form variables... just like everything else on the form.
So you would set up something like:
<!--- set up some CFPARAMs so we can have some defaults --->
<CFPARAM name="FORM.firstname" default="">
<CFPARAM name="FORM.lastname" default="">
<CFIF IsDefined("FORM.submit") AND CompareNoCase(FORM.submit,"Do it!") EQ 0>
<!--- the form was submitted, act on it however you like, including doing selects, inserts, or just CFOUTPUTs --->
Thank you, <CFOUTPUT>#FORM.firstname# #FORM.lastname#</CFOUTPUT> for submitting the form!
<form action="#GetFileFromPath(GetBaseTemplatePath())#" method="POST">
<p>First name:<br />
<!--- include the most recent value of the submitted form, if you like, by simply setting the value to the variable --->
<input type="text" name="firstname" value="#FORM.firstname#"></p>
<p>Last name:<br />
<input type="text" name="lastname" value="#FORM.lastname#"></p>
<p><input type="submit" name="submit" value="Do it!"></p>
The above redisplays the form when it's been submitted. This is one of the chief benefits of submitting to itself. But, if you don't want the form to display again, you can always replace the </CFIF> with a <CFELSE> so that the form is wrapped in a block that would only execute if the form hasn't been submitted yet.
Is that what you had in mind?