【VB.NET机房重构】.NET三层登录

2024-08-26 02:32
文章标签 登录 重构 net 三层 vb 机房

本文主要是介绍【VB.NET机房重构】.NET三层登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         重构这么久,刚摸出点门道,先来介绍一下.NET三层登录。

一、分析

       1、逻辑分析


2、前提准备



3、登录界面


二、代码实现


Entity层代码(UserInfoEntity和WorkLogEntity)

Public Class UserInfoEntity'定义变量Private struserID As StringPrivate strpassword As StringPrivate strlevel As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property Password() As StringGetReturn strpasswordEnd GetSet(value As String)strpassword = valueEnd SetEnd PropertyPublic Property Level() As StringGetReturn strlevelEnd GetSet(value As String)strlevel = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class

Public Class WorkLogEntityPrivate struserID As StringPrivate strloginTime As StringPrivate strlogoutTime As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property LoginTime() As StringGetReturn strloginTimeEnd GetSet(value As String)strloginTime = valueEnd SetEnd PropertyPublic Property LogoutTime() As StringGetReturn strlogoutTimeEnd GetSet(value As String)strlogoutTime = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class
DAL层代码(UserInfoDAL和WorkLogDAL)

Imports System.Data.SqlClient
Imports System.Data
Public Class UserInfoDAL''' <summary>''' 查询用户''' </summary>''' <param name="userinfoentity1"></param>''' <returns></returns>''' <remarks></remarks>Function SelectUser(ByVal userinfoentity1 As Entity.UserInfoEntity)Dim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn '获取SQL语句的内容Dim reader As SqlDataReader '定义SqlDataReader的变量reader'传递数据cmd.Parameters.Add(New SqlParameter("@UserID", userinfoentity1.UserID))cmd.Parameters.Add(New SqlParameter("@Password", userinfoentity1.Password))'定义SQL语句cmd.CommandText = "Select * from UserInfo where UserID=@UserID and Password=@Password and Status='True'"cmd.CommandType = CommandType.Textconn.Open() '打开数据库链接reader = cmd.ExecuteReader() '执行查询语句,生成一个DataReaderDim userinfoentity3 As New Entity.UserInfoEntity'读取查询到的数据,返回相应属性While reader.Read()userinfoentity3.UserID = reader.GetString(0)userinfoentity3.Password = reader.GetString(1)End WhileReturn userinfoentity3End Function
End Class

Imports System.Data.SqlClient
Imports System.Data
Public Class WorkLogDALPublic Function InsertUser(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn'传入数据cmd.Parameters.Add(New SqlParameter("@UserID", Entity.Common2.strCurrentUserID))cmd.Parameters.Add(New SqlParameter("@Status", True))worklogentity.LoginTime = Format(Now, "yyyy-mm-dd hh:mm:ss")cmd.Parameters.Add(New SqlParameter("@LoginTime", worklogentity.LoginTime))'定义SQL语句cmd.CommandText = "Insert into WorkLog(UserID,LoginTime,Status)values(@UserID,@LoginTime,@Status)"conn.Open()Dim num As Integer '表示插入命令的结果Dim flag As New Booleannum = cmd.ExecuteNonQuery '执行插入命令If num > 0 Thenflag = TrueElseflag = FalseEnd IfReturn flagEnd Function
End Class
BLL层代码(LoginBLL和AddWorkLogBLL)

Public Class LoginBLLPublic Function UserLogin(ByVal userinfoentity2 As Entity.UserInfoEntity) As Entity.UserInfoEntityDim userinfodal As New DAL.UserInfoDAL '实例化UserInfoDALDim userinfoentity4 As Entity.UserInfoEntity '定义一个UserInfoEntity的参数userinfoentity4 = userinfodal.SelectUser(userinfoentity2)'判断是否查询到记录If IsNothing(userinfoentity4.UserID) ThenMsgBox("登录失败,用户名和密码不正确!")ElseMsgBox("登录成功,进入系统!")End IfReturn userinfoentity4End Function
End Class

Public Class AddWorkLogBLLPublic Function AddWorkLog(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim worklogdal As New DAL.WorkLogDAL '实例化WorkLogDALDim flag As Boolean 'flag用于定义DAL层的方法WorkLog的返回结果flag = worklogdal.InsertUser(worklogentity)Return flagEnd Function
End Class
UI层代码

Public Class frmLoginPrivate Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.ClickDim userinfoentity As New Entity.UserInfoEntity '实例化UserInfoEntityDim worklogeneity As New Entity.WorkLogEntity '实例化WorkLogEntityDim userinfoentity5 As Entity.UserInfoEntity '定义一个实体层的参数'将界面中的数据传给实体层userinfoentity.UserID = txtUserID.Text.Trim()userinfoentity.Password = txtPassword.Text.Trim()'判断输入框是否为空If txtUserID.Text = "" ThenMessageBox.Show("用户名不能为空")ReturnEnd IfIf txtPassword.Text = "" ThenMessageBox.Show("密码不能为空")ReturnEnd If'调用B层,进行判断Dim loginbll As New BLL.LoginBLL '实例化LoginBLLuserinfoentity5 = loginbll.UserLogin(userinfoentity)'将正在登录的用户登录信息传给全局变量Dim strcommon As New Entity.Common2strcommon.CurrentUserID = txtUserID.Text.Trim()strcommon.CurrentPassword = txtPassword.Text.Trim()Dim flag As BooleanDim addworklogbll As New BLL.AddWorkLogBLL '实例化AddWorkLogBLLflag = addworklogbll.AddWorkLog(worklogeneity)Me.Visible = FalsefrmMain.Visible = TrueEnd Sub
End Class
运行结果:



总结:三层虽然很简单,但是也要认真的搞清楚,这是后面重构的基础。不管会不会,一定要不停的先去做,再不行先照着别人的敲出来,搞清楚各层的调用和跳转再自己重新敲,肯定会有收获。

这篇关于【VB.NET机房重构】.NET三层登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107297

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配