MVC+三层架构实现简单登录

MVC+三层架构实现简单登录_第1张图片
MVC.png

如上图所示,MVC结构中的模型层可以独立的抽出为三大类【BLL业务逻辑类】【DAL数据访问类】【Models实体类】

其中【BLL】要引用【DAL】和【Models】
【DAL】要引用【Models】
【V】和【C】所构成的【UI】层要去引用【BLL】和【Models】

这样就构成了一个MVC+三层架构项目

项目结构图

MVC+三层架构实现简单登录_第2张图片
Object.png

接下来我就带大家一步一步的实现这个案例

采用的编辑器为VS2017

首先打开VS新创建一个项目

MVC+三层架构实现简单登录_第3张图片
1.png

选择空模板并勾选MVC

MVC+三层架构实现简单登录_第4张图片
2.png

然后在解决方案上【右键】【添加】【新项目】来依次添加【BLL】【DAL】【Models】三大类

MVC+三层架构实现简单登录_第5张图片
3.png

接着在【BLL】上的引用上【右键】【添加引用】并勾选【DAL】和【Models】

MVC+三层架构实现简单登录_第6张图片
4.png

同理【DAL】要添加【Models】
项目的引用要添加【BLL】和【Models】

然后在【Models】类库中新建一个【SysAdmin】管理员实体类,用来存放数据,相当于一个数据库。

namespace Models
{
    //管理员实体类
    public class SysAdmin
    {
        public string UserId { get; set; }
        public string Pwd { get; set; }
        public string UserName { get; set; }
    }
}

接着在【DAL】类库中新建一个文件夹,并在内部新建一个通用数据库访问类【SQL】。

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DAL
{
    //通用数据访问类

    class SQL
    {
        static string str = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
        public static SqlDataReader GetReader(string sql)
        {
            SqlConnection conn = new SqlConnection(str);
            SqlCommand cmd = new SqlCommand(sql,conn);
            try
            {
                conn.Open();
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                //输出异常日志
                throw ex;
            }
        }
    }
}

然后在【DAL】中再创建一个【SysAdminService】管理员的数据访问类,通过调用【SQL】类传入sql语句去查询真正的数据库。并把查询出来的数据存放到【Models】的【SysAdmin】类中

using Models;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
    //管理员数据访问类
    public class SysAdminService
    {
        public SysAdmin AdminLogin(SysAdmin objAdmin)
        {
            string str = "select * from Admin where UserId='{0}' and Pwd='{1}'";
            str = string.Format(str,objAdmin.UserId,objAdmin.Pwd);
            SqlDataReader objReader = SQL.GetReader(str);
            if (objReader.Read())
            {
                objAdmin.UserName = objReader["UserName"].ToString();
            }
            else
            {
                objAdmin = null;
            }
            objReader.Close();
            return objAdmin;
        }
    }
}

最后在【BLL】中创建一个【SysAdminManager】管理员的业务逻辑类,等待控制器调用。

using DAL;
using Models;

namespace BLL
{
    //管理员业务逻辑类
    public class SysAdminManager
    {
        public SysAdmin AdminLogin(SysAdmin objAdmin)
        {
            return new SysAdminService().AdminLogin(objAdmin);
        }
    }
}

之后我们要创建一个控制器,在【Controllers】文件夹上【右键】【添加】【控制器】并命名为【SysAdminController】

using Models;
using BLL;

public class SysAdminController : Controller
    {
        // GET: SysAdmin
        public ActionResult Index()
        {
            return View("AdminLogin");
        }
        public ActionResult AdminLogin()
        {
            SysAdmin objAdmin = new SysAdmin()
            {
                UserId = Request.Params["UserId"],
                Pwd = Request.Params["Pwd"]
            };
            objAdmin = new SysAdminManager().AdminLogin(objAdmin);
            if(objAdmin != null)
            {
                ViewData["info"] = "欢迎您:"+objAdmin.UserName;
            }
            else
            {
                ViewData["info"] = "用户名或密码错误";
            }
            return View("AdminLogin");
        }
    }

同时我们要在【Views】文件夹下创建一个与控制器同名的文件夹【SysAdmin】然后在下面场创建一个页面文件

@{
    Layout = null;
}





    
    AdminLogin


    
用户名: 密码:
@ViewData["info"]

最后,再改一下【App_Start】文件夹下的路由设置,将默认控制器的名称改为你控制器的名称。

MVC+三层架构实现简单登录_第7张图片
controller.png

这样一个简单的基于MVC+三层架构的登录功能就实现了。

源码链接: https://pan.baidu.com/s/1hrZxZbI 密码: g78u

你可能感兴趣的:(MVC+三层架构实现简单登录)