黑马程序员技术交流社区
标题: Web开发中的三层架构,指的是哪三层 [打印本页]
作者: hou1989 时间: 2013-1-17 09:54
标题: Web开发中的三层架构,指的是哪三层
本帖最后由 hou1989 于 2013-1-17 20:07 编辑
Web开发中的三层架构,指的是哪三层,各个层之间怎么作用,求详细的演示代码
作者: 罗志强 时间: 2013-1-17 10:13
表现层、业务逻辑层、数据访问层。
作者: 王继光 时间: 2013-1-17 10:17
3层指的是 :
1.DAL层 (数据访问层)
2.BLL层 (业务层)
3.UI层 (表现层)
另外还有一个MODEL程序集
他们之间程序集之间的 引用关系 是:
数据层 引用 (MODEL程序集)
业务层 引用 (MODEL程序集 和 数据层)
表现层 引用 (MODEL程序集 和 业务层)
至于你说的代码演示,, 这里不大现实。。 你还是 仔细看视频吧 在 一般处理程序 增删改查这块 有这方面的知识。。
作者: 许庭洲 时间: 2013-1-17 10:21
本帖最后由 许庭洲 于 2013-1-17 11:25 编辑
1. 表现层(UI):表现层就是展现给用户的界面,即用户在使用一个系统的时候的所见所得;
2. 业务逻辑层(BLL): 针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑的处理;
3. 数据访问层(DAL): 该层所做事务直接操作数据库,针对数据的增添,删除,修改,更新,查找等,每层之间是一种垂直的关系。
4. 举例子:
第一步.右键解决方案,添加,新建项目,c#类库,命名为MODEL,对其下的类重命名:Model
代码如下:
/// <summary>
/// 初始化登录名称、登录密码(Model类)
/// </summary>
private string adminUser =string.Empty; //设置用户名称为空值
private string adminPwd =string.Empty; //设置用户密码为空值
public string AdminUser
{
get
{
return this.adminUser;
}
set
{
this.adminUser = value;
}
}
public string AdminPwd
{
get
{
return this.adminPwd;
}
set
{
this.adminPwd = value;
}
}
第二步:右键解决方案,添加,新建项目,C#类库,命名为BLL,对其下的类重命名:Bll
代码如下:
/// <summary>
/// 用户登录(BLL类)
/// </summary>
/// <paramname="m"></param>
///<returns></returns>
public static int sysLogin(Model m)
{
string str ="adminValid"; //存储过程名称
SqlParameter[] sqlParameter =
{
//将UI层传递过来的用户名称和密码赋值给存储过程中的变量分别是adminUser和adminPwd(注意大小写)
new SqlParameter("adminUser",m.AdminUser),
new SqlParameter("adminPwd",m.AdminPwd)
};
DAL d = new DAL();
returnInt32.Parse(d.ExecuteScalar(str,sqlParameter));
}
第三步:右键解决方案,添加,新建项目,C#类库,命名为DAL,对其下的类重命名:Dal数据库名要自己进行改动:
代码如下:
/// <summary>
/// 新建一个SQL登录链接
/// </summary>
///<returns></returns>
private static SqlConnectioncon()
{
return newSqlConnection("Data Source=localhost;Initial Catalog=MYDB;Integrated Security=SSPI;");
}
/// <summary>
/// 执行操作(DAL类)
/// </summary>
/// <paramname="str"></param>
/// <paramname="sql"></param>
///<returns></returns>
public stringExecuteScalar(string str, SqlParameter[] sql)
{
SqlConnection con =DAL.con();
try
{
con.Open();
SqlCommand com = newSqlCommand(str, con);
com.CommandType =CommandType.StoredProcedure;
com.Parameters.AddRange(sql);
return Convert.ToString(com.ExecuteScalar()); //返回受影响的行数(例如影响的行数为1,那么返回数值1到BLL层,然后BLL层将数值1返回到UI层)
}
catch (Exception Error)
{
throw Error;
}
finally
{
con.Close();
}
}
第四步:右键解决方案,添加,新建网站,asp.net网站,命名为Login,页面中加入两个TextBox控件和一个Label控件,还有一个Button,以下为Button的点击事件代码:
代码如下:
//UI层
Model m = new Model(); //实例化Model类
m.AdminUser =this.TextBox1.Text.ToString(); //将文本框1中的值传递给Model类中的AdminUser
m.AdminPwd =this.TextBox2.Text.ToString(); //将文本框2中的值传递给Model类中的AdminPwd
if (BLL.sysLogin(m) > 0)
{
this.Label1.Text = "登录成功!马上进入管理平台...";
}
else
{
this.Label1.Text = "用户或密码错误,请重新输入!";
}
第五步:写后台数据库存储过程
--存储过程(按自己的数据库进行改动)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[adminValid]
@adminUser varchar(20),@adminPwd varchar(120)
AS
SELECT COUNT(*) FROM admin WHERE adminUser = @adminUser AND adminPwd =@adminPwd
作者: 张文 时间: 2013-1-17 11:09
楼上的果然精辟啊。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |