使用纯HTML的通用数据管理和服务。然而,为了收集数据,你需要一个数据储存库。要避免使用数据库服务器带来的很多问题,你可以在XML中收集这些数据。下面是我们的项目的基本结构:
<user>
<first_name/>
<last_name/>
<mi/>
</user>
我最初将数据限制为first name,last name和middle。这个页面之后的基本思想是用户信息在这个页面中获得。在用户信息需求得到满足以后,流程必须被转到下一个逻辑收集步骤。为了使事情变得简单,我将把用户功能包装到一个ASP类中。
Function Coalesce(vVar, vAlt)
If vVal = "" Or VarType(vVal) = 1 Or VarType(vVal)
= 0 Then
Coalesce = vAlt
Else
Coalesce = vVal
End If
End Function
Class CUser
Private m_SQL, m_DOM
Public Property Get DOM()
Set DOM = m_DOM
End Property
Public Sub saveUser()
m_SQL.save "save_user", m_DOM
End Sub
Public Function validate()
m_DOM.loadXML "<root>" & m_SQL.validateUser(m_DOM)
& "</root>"
If Not m_DOM.selectSingleNode("//error")
Is Nothing Then
validate = False
Else
validate = True
End If
End Function
Private Sub collectData(dom, oCollection)
Dim nItem, node, parent_node, n, sKey
For nItem = 1 To oCollection.Count
sKey = oCollection.Key(nItem)
Set parent_node = dom.selectSingleNode("//"
& sKey & "s")
If Not parent_node Is Nothing
Then
For
n = 1 To oCollection(sKey).Count
Set
node = parent_node.selectSingleNode(sKey & _
"[string(.)='" &
oCollection(sKey)(n) & "']")
If
node Is Nothing Then
Set
node = dom.createNode(1, sKey, "")
Set
node = parent_node.appendChild(node)
End
If
node.text
= Coalesce(oCollection(sKey)(n), "")
Next
Else
Set
node = dom.selectSingleNode("//" & sKey)
If
Not node Is Nothing Then _
node.text
= Coalesce(oCollection(sKey), "")
End If
Next
End Sub
Private Sub Class_Initialize()
Set m_SQL = New CSQL
Set m_DOM = Server.CreateObject("MSXML2.DOMDocument")
m_DOM.async = False
If VarType(Request ("txtUserXML")) = 0 Or
Request ("txtUserXML") = "" Then
m_DOM.loadXML Request("txtUserXML")
Else
m_DOM.load "<root>"
& Server.MapPath("user.xml") & "</root>"
End If
collectData m_DOM, Request.Form
collectData m_DOM, Request.QueryString
End Sub
Private Sub Class_Terminate()
Set m_SQL = Nothing
Set m_DOM = Nothing
End Sub
End Class
Class CSQL
Private m_DAL, m_Stream
Public Function save(sStoredProc, oDOM)
'adVarChar = 200
m_DAL.RunSP Array(m_DAL.mp("@xml_param",
200, 8000, oDOM.xml))
End Function
Public Function validateUser(oDOM)
Set m_Stream = m_DAL.RunSPReturnStream("validate_user",
Array(_
m_DAL.mp("@xml_param",
200, 8000, oDOM.xml)))
validateUser = m_Stream.ReadText(-1)
m_Stream.Close
End Function
Private Sub Class_Initialize()
Set m_DAL = Server.CreateObject("MyPkg.MyDAL")
m_DAL.GetConnection "some connection string"
Set m_Stream = Server.CreateObject("ADODB.Stream")
End Sub
Private Sub Class_Terminate()
Set m_DAL = Nothing
Set m_Stream = Nothing
End Sub
End Class