剖析三层——登陆实例

来源:互联网 发布:淘宝茜舞女装 编辑:程序博客网 时间:2024/06/15 01:58

     最近学习三层也有几天的时间了,真应了那句话,万事开头难,一个简单的例子在我手里也折腾了好几天才理解清楚,不过弄明白了,才发现其实挺简单的,下面就跟大家分享下我理解的三层!

概念剖析

表现层(UI):也就是我们经常看到的界面,比如说弹出来的对话框,需要我们输入密码和用户名!

业务逻辑层(BLL):用来作为U层和D层之间数据传递的介质,接收U层和D层传递过来的数据,在B层进行判断!(判断能否正常登陆)

数据访问层(DAL):连接数据库,在这层中完成对数据库中的数据进行 增删改查的过程!

区分层次的目的即为了“高内聚,低耦合”的思想。

*****************************************************************

下面我们以一个简单的登陆为例,再度深入理解三层



登陆流程图:

(这里的图用的是亿图画的,大家还有好的方法,及时分享哦~)


                                                                                                                       


*****************************************************************************

代码篇:

          

首先我们用VB先建立这几个项目,这里除了三层(U,B,D)层之外,新建了一个实体层LoginModel,用来存放实体。

这样做的好处:点击打开链接


介绍下显示层的代码:

当我们成功输入用户名和密码之后,程序执行到B层接口那里,跳转到B层

<span style="font-family:KaiTi_GB2312;font-size:24px;">Imports LoginModelImports Login_BLLImports Login_DALPublic Class frmLogin    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click        '定义参数user,用来获取实体层的参数        Dim user As New UserInfo        '将用户输入的信息进行赋值        user.name = txtUserName.Text.Trim()        user.psword = txtPassWord.Text        '定义访问B层的一个接口,从这跳转到B层        Dim buser = New Login_BLL.LoginService        '显示是否能成功登陆        Dim enuser = buser.userLogin(user)        MessageBox.Show("您好,登录成功!登录用户:" + user.name)    End Sub    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click        End    End SubEnd Class</span>

B层代码:

<span style="font-family:KaiTi_GB2312;font-size:24px;">Imports LoginModelImports Login_DALPublic Class LoginService    Public Function userLogin(ByVal user As UserInfo) As LoginModel.UserInfo        '定义一个与D层连接的接口        Dim uDao As New Login_DAL.UserDAO        Try            user = uDao.selectUser(user)        Catch ex As Exception            MsgBox(ex.Message)        End Try        '判断是否能成功登陆        Try            If (user.name <> "" And user.psword <> "") Then                <pre code_snippet_id="381521" snippet_file_name="blog_20140607_3_7590809" name="code" class="vb">                Throw New Exception("登陆成功")
Else Throw New Exception("登陆失败") End If Catch ex As Exception
           Throw New Exception("登陆失败")
End Try Return user End FunctionEnd Class</span>

D层代码:

<span style="font-family:KaiTi_GB2312;font-size:24px;">'引用LoginModel项目Imports LoginModel'引用命名空间system.data.sqlclientImports System.Data.SqlClientPublic Class UserDAO    '定义连接数据库字符串    Dim sconn As String    Dim dbconn As SqlConnection    Dim UserDAO As Object    '读取数据库信息的方式    Dim myreader As SqlDataReader    '访问实体层信息    Dim name1 As LoginModel.UserInfo    '定义函数连接数据库的一个过程    Public Function getConn() As SqlConnection        sconn = "Server=.;database=Login;integrated security=sspi"        '实例化        dbconn = New SqlConnection(sconn)        Return dbconn    End Function    '定义一个SelectUser方法,用于实现对数据库的查询,读取数据库中的信息!    Public Function selectUser(ByVal model As UserInfo) As LoginModel.UserInfo        Dim sqlconn As SqlConnection = Me.getConn()        '打开数据库连接        sqlconn.Open()        Dim sqlstring As String = "select UserName,PassWord from Users where UserName=@UserName and PassWord=@PassWord"        Dim cmd As New SqlCommand(sqlstring, dbconn)        '访问数据库的方法        cmd.CommandText = sqlstring        cmd.CommandType = CommandType.Text        cmd.Parameters.Add(New SqlParameter("@UserName", model.name))        cmd.Parameters.Add(New SqlParameter("@PassWord", model.psword))        cmd.CommandType = CommandType.Text        '到数据库中读取数据库的信息,读取数据库中的信息有很多种方法,这里只先介绍一种        myreader = cmd.ExecuteReader()        name1 = Nothing        While (myreader.Read())            If name1 Is Nothing Then                name1 = New LoginModel.UserInfo                '将数据库中的值赋值给name1                name1.name = myreader.GetString(0)                name1.psword = myreader.GetString(1)            End If        End While        '返回的值将返回到B层进行判断        Return name1    End FunctionEnd Class</span>


好了,到这基本上登陆的小例子就能实现了!


********************************************************

体会:三层基本上就是实现一个解耦的过程,分解了代码之间的联系程度,就好像我们想换个数据库使用,只用更改其中的几句代码就行!但是三层的使用也得合适,就像这个登录的小例子,在这就感觉有种大材小用的感觉,不过以后当我们敲大型的系统用到三层的思想就非常有好处的!!无论什么思想和方法,都需要我们在实践中反复练习才能深刻的理解!


0 0
原创粉丝点击