[ASP.NET 개발] ASP.***
먼저 MVC의 의미와 각 측면 간의 용도와 기능을 소개한다.
1) 솔리드 레이어주로 보기층과 업무 논리층 사이에서 데이터를 전달하는 캐리어를 설명하는 데 쓰인다.일반적으로 출처와 프로젝트 데이터베이스에 있는 하나 이상의 표로 구성된 의미 있는 기록을 대표한다.
2) 업무 논리층.업무 논리에 따라 시각층에 데이터를 제공하면 이 프로젝트의 클래스는 업무 논리에 따라 데이터베이스 접근층을 호출할지 여부를 결정할 권리가 있다
3) 데이터베이스 액세스 레이어항목 업무 논리층이 데이터에 접근하는 방법을 제공합니다.
4) 뷰 레이어주로 사이트 개발을 예로 들 수 있다.디스플레이, 추가, 편집, 삭제를 제공합니다.
VS에서 작성한 프로젝트의 맵:
NetMVC는 뷰 레이어입니다.Entity는 개발 과정에서 사용할 모든 변수를 선언하는 솔리드 레이어입니다.DAL은 데이터베이스 액세스 계층으로, 주로 모든 작업을 수행하여 데이터베이스에 액세스합니다.BLL은 비즈니스로직 계층으로, 뷰포트에서 전송되는 비즈니스로직을 처리한 다음 데이터베이스 액세스 계층에 전달하여 처리합니다.
이 예제에서는 로그인 페이지의 구현을 보여 줍니다. Entity 레이어의 코드는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Text;
namespace Entity
{
public class UserInfo
{
private int UserId;
///
///
///
public int UserId1
{
get { return UserId; }
set { UserId = value; }
}
private string username;
///
///
///
public string Username
{
get { return username; }
set { username = value; }
}
private string password;
///
///
///
public string Password
{
get { return password; }
set { password = value; }
}
private int loginCount;
///
///
///
public int LoginCount
{
get { return loginCount; }
set { loginCount = value; }
}
private DateTime regDate;
///
///
///
public DateTime RegDate
{
get { return regDate; }
set { regDate = value; }
}
private DateTime lastLoginDate;
///
///
///
public DateTime LastLoginDate
{
get { return lastLoginDate; }
set { lastLoginDate = value; }
}
private bool isForbidden;
private string passwordQuestion;
///
///
///
public string PasswordQuestion
{
get { return passwordQuestion; }
set { passwordQuestion = value; }
}
private string passwordAnswer;
///
///
///
public string PasswordAnswer
{
get { return passwordAnswer; }
set { passwordAnswer = value; }
}
}
}
실체 클래스에 대한 창설을 완성하고 데이터베이스 접근층에 대한 창설을 완성해야 한다(그 중에서 앞의 문장에서 쓴 SqlHelper 데이터베이스에서 일반 클래스에 접근해야 한다.http://blog.csdn.net/yisuowushinian/article/details/7999305), 코드는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using Entity;
namespace DAL
{
public class UserDal
{
private string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
///
///
///
///
///
public bool AddUser(UserInfo info)
{
string sql = "insert into Users(Username,password) values('@Username','@password')";
SqlParameter[] parameters = new SqlParameter[4];
parameters[0] = new SqlParameter("@Username", SqlDbType.NVarChar, 30);
parameters[0].Value = info.Username;
parameters[1] = new SqlParameter("password", SqlDbType.VarChar, 50);
parameters[1].Value = info.Password;
return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
}
///
///
///
///
///
public bool DeleteUser(int UserId)
{
string sql = "delete from users where UserId=" + UserId;
return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
}
///
///
///
///
///
public bool UpDateUser(UserInfo info)
{
string sql = "update users set password=@password,loginCount=@loginCount where userid=@userid";
SqlParameter[] parameters = new SqlParameter[7];
parameters[0] = new SqlParameter("@password", SqlDbType.VarChar, 30);
parameters[0].Value = info.Password;
parameters[1] = new SqlParameter("@loginCount", SqlDbType.Int, 4);
parameters[1].Value = info.LoginCount;
return new SqlDbHelper(connectionString).ExecuteNonQuery(sql) > 0;
}
///
///
///
///
///
public DataTable GetUser(int userId)
{
string sql = "select * from users where userId=@UserId";
SqlParameter[] parameters = new SqlParameter[1];
parameters[0] = new SqlParameter("@UserId", SqlDbType.Int, 4);
parameters[0].Value = userId;
return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
}
///
///
///
///
///
public DataTable GetUser(string Username)
{
string sql = "select * from users where username=@username";
SqlParameter[] parameters = new SqlParameter[1];
parameters[1] = new SqlParameter("@username", SqlDbType.NVarChar, 30);
parameters[1].Value = Username;
return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters);
}
///
///
///
///
///
///
public DataTable GetUserList(int startIndex, int size)
{
string sql = "select top " + size + " * from users where UserId not in (select top " + startIndex + " UserId from Users order by UserId asc)order by UserId asc";
return new SqlDbHelper(connectionString).ExecuteDataTable(sql);
}
///
///
///
///
public int GetUserCount()
{
string sql = "select count(1) from Users";
return int.Parse(new SqlDbHelper(connectionString).ExecuteScalar(sql).ToString());
}
}
}
그런 다음 다음과 같은 비즈니스 논리 레이어를 생성합니다.
using System;
using System.Collections.Generic;
using System.Text;
using DAL;
using Entity;
using System.Data;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Security;
namespace BLL
{
public class UserBLL
{
private static string MD5Hash(string password)
{
MD5 md5 = MD5.Create();// Md5
// UTF-8
byte[] sourceBytes = System.Text.Encoding.UTF8.GetBytes(password);
//
byte[] resultBytes = md5.ComputeHash(sourceBytes);
StringBuilder buffer = new StringBuilder(resultBytes.Length);
//
foreach (byte b in resultBytes)
{
buffer.Append(b.ToString("X"));
}
return buffer.ToString();
}
///
///
///
///
///
public static bool AddUser(UserInfo info)
{
UserDal dal = new UserDal();
DataTable data = dal.GetUser(info.Username);
if (data.Rows.Count > 0)
{
return false;
}
else
{
info.Password =MD5Hash (info.Password);
return new UserDal().AddUser(info);
}
}
///
///
///
///
///
public static bool DeleteUser(int userId)
{
return new UserDal().DeleteUser(userId);
}
///
///
///
///
///
///
public static bool UpdateUser(UserInfo info, bool changePassword)
{
//
// ,
if (changePassword)
{
info.Password = MD5Hash(info.Password);
}
return new UserDal().UpDateUser(info);
}
///
///
///
///
///
public static DataTable GetUser(int UserId)
{
return new UserDal().GetUser(UserId);
}
///
///
///
///
///
public static DataTable GetUser(string userName)
{
return new UserDal().GetUser(userName);
}
///
///
///
///
///
///
public static DataTable GetUserList(int startIndex, int size)
{
return new UserDal().GetUserList(startIndex, size);
}
///
///
///
///
public static int GetUserCount()
{
return new UserDal().GetUserCount();
}
///
/// , null
///
///
///
public static UserInfo GetUserEntity(int userId)
{
return ChangeToEntity(new UserDal().GetUser(userId));
}
///
/// , null
///
///
///
public static UserInfo GetUserEntity(string userName)
{
return ChangeToEntity(new UserDal().GetUser(userName));
}
///
/// Users DataTables Userinfo
///
///
///
private static UserInfo ChangeToEntity(DataTable data)
{
UserInfo info = null;
// data 0、
if (data!=null&&data.Rows.Count > 0)
{
DataRow row = data.Rows[0];
info = new UserInfo();
}
return info;
}
public static bool Login(string userName, string password)
{
bool exits = false;
UserInfo info = GetUserEntity(userName);
if (info != null && MD5Hash(password) == info.Password)
{
exits = true;
info.LoginCount = info.LoginCount + 1;// 1
info.LastLoginDate = DateTime.Now;//
UpdateUser(info, false);//
}
return exits;
}
}
}
이것은 데이터베이스 접근층, 실체층, 업무 논리층에 대한 창설 작업을 완성했다.창설 과정에서 많은 중복된 작업이 있었기 때문에 나는 속도를 높이기 위해 코드를 생략했다.
로그인 페이지에서 사용할 때 업무 논리층을 도입하는 방법만 있으면 그 방법에 따라 해당하는 매개 변수를 전송하면 모든 조작을 완성할 수 있다.
판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
전재 대상:https://www.cnblogs.com/yisuowushinian/archive/2012/09/27/4715648.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.