使用纯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