2023年6月21日发(作者:)

javasoa实例_三层架构实战篇—系统登录实例上⼀篇博客,介绍了三层的⼀些基本理论,但是学习光有理论还是不⾏滴!马克思不也说过了吗?实践是检验真理的唯⼀标准!所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(PC)、应⽤服务器、数据库服务器。逻辑上的三层,也就是我们要讨论的,分为表⽰层、业务逻辑层、数据访问层。实体层,严格的来说不属于三层中的任⼀层,它是独⽴于其他三个层次的,只能供其他层次进⾏引⽤,但是不能引⽤其他的三个层次。下⾯是数据在三层中的⼀个具体⾛向图,这对于我们了解三层的⼀条线很有帮助。三层应⽤原则:DAL只提供基本的数据访问,不包含任何的业务逻辑UI只负责显⽰和采集⽤户操作,不包含任何业务相关的逻辑处理BLL负责处理业务逻辑。通过获取UI传来的⽤户指令,执⾏业务逻辑,在需要访问数据源的时候,直接交个DAL进⾏处理。处理完成后,返回必要数据给UI。实现步骤:(1)前期准备:1.根据上⼀层引⽤下⼀层以及实体层在各层的作⽤,绘制UML图。2.根据UML图显⽰的关系,构建三层框架。3.建⽴数据库,包含UserInfo表。(2)代码实现阶段1.⽤户界⾯层(LoginUI):作⽤:向⽤户展现特定业务数据采集⽤户的输⼊信息和操作原则:⽤户⾄上,兼顾简洁添加类:frmLoginnamespace LoginUI{public partial class frmLogin : Form{public frmLogin(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){//UI层将⽤户输⼊数据传递给BLL层string userName = ();string password = ;anager mgr = new anager(); .UserInfo user= gin (userName, password);//UI层返回业务层传递的数据给⽤户("登录⽤户:" + me);}2.业务逻辑层(LoginBLL):作⽤:从DAL获取数据,提供UI显⽰从UI获取⽤户和指令,执⾏业务逻辑从UI获取⽤户和指令,通过DAL写⼊数据BLL的职责机制:UI→BLL→UIUI→BLL→DAL→BLL→UI添加类:LoginManagernamespace {public class LoginManager{public .UserInfo UserLogin(string userName,string password){O uDao = new .u (); //实例化DAL层fo user = User(userName, password);//不需要访问数据源,直接执⾏业务逻辑if (user != null){return user;}else{throw new Exception("登录失败");}}}}3.数据访问层(LoginDAL):作⽤:SELECT、INSERT/UPDATE、DELETE添加类:UserDAOnamespace {public class UserDAO{public fo SelectUser(string userName, string Password){//建⽴数据库连接string ConnString = @"Server =192.168.24.45;DataBase =Login; User ID =sa ;Password =123";using (SqlConnection conn = new SqlConnection(ConnString)){//执⾏SQL语句进⾏查询SqlCommand cmd = Command();dText = @"SELECT ID,UserName,Password,EmailFROM UserInfo WHERE UserName =@UserName AND Password =@Password";//输出查询结果dType = ;//添加两个参数(new SqlParameter(@"UserName", userName));(new SqlParameter(@"Password", Password));();SqlDataReader reader = eReader();fo user = null;//读取具体的数据while (()){if (user == null){user = new fo();}//读取查询到的数据 = 32(0);me = ing(1);rd = ing(2);if (!ll(3)){ = ing(3);}}return user;}}}}4.实体(LoginModel):作⽤:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层添加类:UserInfonamespace {public class UserInfo{//定义⽤户属性public int ID { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Email { get; set; }}}

2023年6月21日发(作者:)

javasoa实例_三层架构实战篇—系统登录实例上⼀篇博客,介绍了三层的⼀些基本理论,但是学习光有理论还是不⾏滴!马克思不也说过了吗?实践是检验真理的唯⼀标准!所谓的三层分为物理上的三层和逻辑上的三层。物理上的三层包括:客户端(PC)、应⽤服务器、数据库服务器。逻辑上的三层,也就是我们要讨论的,分为表⽰层、业务逻辑层、数据访问层。实体层,严格的来说不属于三层中的任⼀层,它是独⽴于其他三个层次的,只能供其他层次进⾏引⽤,但是不能引⽤其他的三个层次。下⾯是数据在三层中的⼀个具体⾛向图,这对于我们了解三层的⼀条线很有帮助。三层应⽤原则:DAL只提供基本的数据访问,不包含任何的业务逻辑UI只负责显⽰和采集⽤户操作,不包含任何业务相关的逻辑处理BLL负责处理业务逻辑。通过获取UI传来的⽤户指令,执⾏业务逻辑,在需要访问数据源的时候,直接交个DAL进⾏处理。处理完成后,返回必要数据给UI。实现步骤:(1)前期准备:1.根据上⼀层引⽤下⼀层以及实体层在各层的作⽤,绘制UML图。2.根据UML图显⽰的关系,构建三层框架。3.建⽴数据库,包含UserInfo表。(2)代码实现阶段1.⽤户界⾯层(LoginUI):作⽤:向⽤户展现特定业务数据采集⽤户的输⼊信息和操作原则:⽤户⾄上,兼顾简洁添加类:frmLoginnamespace LoginUI{public partial class frmLogin : Form{public frmLogin(){InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){//UI层将⽤户输⼊数据传递给BLL层string userName = ();string password = ;anager mgr = new anager(); .UserInfo user= gin (userName, password);//UI层返回业务层传递的数据给⽤户("登录⽤户:" + me);}2.业务逻辑层(LoginBLL):作⽤:从DAL获取数据,提供UI显⽰从UI获取⽤户和指令,执⾏业务逻辑从UI获取⽤户和指令,通过DAL写⼊数据BLL的职责机制:UI→BLL→UIUI→BLL→DAL→BLL→UI添加类:LoginManagernamespace {public class LoginManager{public .UserInfo UserLogin(string userName,string password){O uDao = new .u (); //实例化DAL层fo user = User(userName, password);//不需要访问数据源,直接执⾏业务逻辑if (user != null){return user;}else{throw new Exception("登录失败");}}}}3.数据访问层(LoginDAL):作⽤:SELECT、INSERT/UPDATE、DELETE添加类:UserDAOnamespace {public class UserDAO{public fo SelectUser(string userName, string Password){//建⽴数据库连接string ConnString = @"Server =192.168.24.45;DataBase =Login; User ID =sa ;Password =123";using (SqlConnection conn = new SqlConnection(ConnString)){//执⾏SQL语句进⾏查询SqlCommand cmd = Command();dText = @"SELECT ID,UserName,Password,EmailFROM UserInfo WHERE UserName =@UserName AND Password =@Password";//输出查询结果dType = ;//添加两个参数(new SqlParameter(@"UserName", userName));(new SqlParameter(@"Password", Password));();SqlDataReader reader = eReader();fo user = null;//读取具体的数据while (()){if (user == null){user = new fo();}//读取查询到的数据 = 32(0);me = ing(1);rd = ing(2);if (!ll(3)){ = ing(3);}}return user;}}}}4.实体(LoginModel):作⽤:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层添加类:UserInfonamespace {public class UserInfo{//定义⽤户属性public int ID { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Email { get; set; }}}