大家好,暑假过大半,不知道现在的你在做些什么,也许在苦力,也许在加班,也许在打dota,也许...在写代码。体会着属于自己的生活和理想,而我也在忙碌中迅速的往社会的方向迈进,马上毕业了,压力山大啊,找工作的话还是坚持自己心中的理想,不达目标绝不妥协!虽然有些偏激但更为自己的态度所决定,我就是这么一个人。
可能有想要表白的意愿吧,所以就在暑假工作期间萌发了写网站的想法,技术有限的我,在工作期间大量的学习和问项目总监(挺不错的一个牛x的人),花了大概一个星期就艰难的完成了博客,其实是为她而做,希望在开学的时候告诉她自己的内心的想法,并且期望自己想要的结果,所以很是努力。天在看.....
喜欢开源的东西,所以这次也就准备试一试,在前几期的博文中已经介绍了几个博客建站的必备功能的代码学习过程。这里就不多陈述了,接下来就直接进入三层的编写,表现层,业务逻辑层,数据层大家应该很熟悉了吧,如果不清楚这个过程的,百度一下,这里就不做陈述了。
下面是三层的代码和逻辑引用。举一例,用户信息的三层代码:
Model:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Model
{
public
class
L_User
{
#region 实例化用户&管理员的主要字段
public
int
UID {
get
;
set
; }
public
string
Author {
get
;
set
; }
public
string
UUserPwd {
get
;
set
; }
public
string
UEmail {
get
;
set
; }
public
DateTime UCreateTime {
get
;
set
; }
public
string
UUserRole {
get
;
set
; }
#endregion
}
}
|
DAL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
Model;
using
System.Data.SqlClient;
using
System.Data;
namespace
DAL
{
public
class
UserDAL
{
//添加用户
public
int
AddUser(L_User user)
{
try
{
int
i = DBHelper.executeSql(
"insert into L_User(Author,UUserPwd,UEmail,UCreateTime,UUserRole) values(@Author,@UUserPwd,@UEmail,@UCreateTime,@UUserRole)"
,
new
SqlParameter(
"@Author"
, user.Author),
new
SqlParameter(
"@UUserPwd"
, user.UUserPwd),
new
SqlParameter(
"@UEmail"
, user.UEmail),
new
SqlParameter(
"@UCreateTime"
, user.UCreateTime),
new
SqlParameter(
"@UUserRole"
, user.UUserRole));
return
i;
}
catch
(Exception ee)
{
throw
new
Exception(ee.Message);
}
}
//修改user
public
int
UpdateUser(
int
UID,
string
Author,
string
UUserPwd,
string
UEmail, DateTime UCreateTime,
string
UUserRole)
{
int
i = DBHelper.executeSql(
"update L_User set Author=@Author,UUserPwd=@UUserPwd,UEmail=@UEmail, UCreateTime=@UCreateTime,UUserRole=@UUserRole where UID=@UID"
,
new
SqlParameter(
"@UID"
, UID),
new
SqlParameter(
"@Author"
, Author),
new
SqlParameter(
"@UUserPwd"
, UUserPwd),
new
SqlParameter(
"@UEmail"
, UEmail),
new
SqlParameter(
"@UCreateTime"
, UCreateTime),
new
SqlParameter(
"@UUserRole"
, UUserRole));
return
i;
}
//删除user
public
int
DeleteUser(
int
UID)
{
int
i = DBHelper.executeSql(
"delete from L_User where UID=@UID "
,
new
SqlParameter(
"@UID"
, UID));
return
i;
}
//单独的一条user信息
public
L_User get_singleUser(
int
UID)
{
DataSet ds = DBHelper.dataset(
"select * from L_User where UID=@UID "
,
new
SqlParameter(
"@UID"
, UID));
L_User lu =
new
L_User();
if
(ds !=
null
)
{
lu.UID = Convert.ToInt32(ds.Tables[0].Rows[0][
"UID"
].ToString());
lu.Author = ds.Tables[0].Rows[0][
"Author"
].ToString();
lu.UUserPwd = ds.Tables[0].Rows[0][
"UUserPwd"
].ToString();
lu.UEmail = ds.Tables[0].Rows[0][
"UEmail"
].ToString();
lu.UCreateTime = Convert.ToDateTime(ds.Tables[0].Rows[0][
"UCreateTime"
].ToString());
lu.UUserRole = ds.Tables[0].Rows[0][
"UUserRole"
].ToString();
return
lu;
}
else
{
return
null
;
}
}
//单独的一条user信息2
public
L_User get_singleUser(
string
name)
{
DataSet ds = DBHelper.dataset(
"select * from L_User where Author=@Author "
,
new
SqlParameter(
"@Author"
, name));
L_User lu =
new
L_User();
if
(ds !=
null
&& ds.Tables[0].Rows.Count > 0)
{
lu.UID = Convert.ToInt32(ds.Tables[0].Rows[0][
"UID"
].ToString());
lu.Author = ds.Tables[0].Rows[0][
"Author"
].ToString();
lu.UUserPwd = ds.Tables[0].Rows[0][
"UUserPwd"
].ToString();
lu.UEmail = ds.Tables[0].Rows[0][
"UEmail"
].ToString();
lu.UCreateTime = Convert.ToDateTime(ds.Tables[0].Rows[0][
"UCreateTime"
].ToString());
lu.UUserRole = ds.Tables[0].Rows[0][
"UUserRole"
].ToString();
return
lu;
}
else
{
return
null
;
}
}
// 获取所有用户的列表信息
public
DataSet GetUserGroupList2(
string
sqlstr)
{
string
cmdText =
"select * from L_User where 1=1 "
;
if
(sqlstr !=
""
)
{
cmdText += sqlstr;
}
return
DBHelper.getDataSet(cmdText);
}
//修改密码
public
int
UpdateUS(
string
UUserPwd)
{
int
i = DBHelper.executeSql(
@" update L_User set UUserPwd=@UUserPwd ;"
,
new
SqlParameter(
"@UUserPwd"
, UUserPwd));
return
i;
}
//检查登录(此方法有误)
public
int
CheckLogin(
string
Author,
string
UUserPwd)
{
try
{
int
i = Convert.ToInt32(DBHelper.executeScalar(
"select count(*) from L_User where Author=@Author and UUserPwd=@UUserPwd "
,
new
SqlParameter(
"@Author"
, Author),
new
SqlParameter(
"@UUserPwd"
, UUserPwd)));
return
i;
}
catch
(Exception ee)
{
throw
new
Exception(ee.Message);
}
}
//验证用户的角色
public
L_User checkAuthor(
string
Author)
{
DataSet ds = DBHelper.dataset(
"select * from L_User where Author=@Author "
,
new
SqlParameter(
"@Author"
, Author));
if
(ds !=
null
)
{
L_User LU =
new
L_User();
LU.UUserRole = ds.Tables[0].Rows[0][
"UUserRole"
].ToString();
return
LU;
}
else
{
return
null
;
}
}
//验证用户是否相同
public
int
CheckUser(
string
Author)
{
try
{
int
i = Convert.ToInt32(DBHelper.executeScalar(
"select count(*) from L_User where Author=@Author"
,
new
SqlParameter(
"@Author"
, Author)));
return
i;
}
catch
(Exception ee)
{
throw
new
Exception(ee.Message);
}
}
//验证旧密码是否相同
public
L_User Checkjiu(
string
Author)
{
DataSet ds = DBHelper.dataset(
"select * from L_User where Author=@Author "
,
new
SqlParameter(
"@Author"
, Author));
L_User LU =
new
L_User();
LU.UUserPwd = ds.Tables[0].Rows[0][
"UUserPwd"
].ToString();
return
LU;
}
}
}
|
BLL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
Model;
using
DAL;
using
System.Data;
namespace
BLL
{
public
class
UserService
{
/// <summary>
/// 添加用户
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public
int
AddUser(L_User user)
{
UserDAL userDal =
new
UserDAL();
return
userDal.AddUser(user);
}
/// <summary>
/// 修改user
/// </summary>
/// <param name="UID"></param>
/// <param name="BlogTiltle"></param>
/// <param name="BlogContent"></param>
/// <param name="CreateTime"></param>
/// <param name="Recommand"></param>
/// <returns></returns>
public
int
UpdateUser(
int
UID,
string
Author,
string
UUserPwd,
string
UEmail, DateTime UCreateTime,
string
UUserRole)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.UpdateUser(UID, Author, UUserPwd, UEmail, UCreateTime, UUserRole);
}
/// <summary>
/// 删除user
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public
int
DeleteUser(
int
UID)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.DeleteUser(UID);
}
/// <summary>
/// 获取所有用户的信息列表
/// </summary>
/// <returns></returns>
public
DataSet GetUserGroupList2(
string
sqlstr)
{
UserDAL ugDAL =
new
UserDAL();
return
ugDAL.GetUserGroupList2(sqlstr);
}
/// <summary>
/// 单独的一条用户信息
/// </summary>
/// <param name="UID"></param>
/// <returns></returns>
public
L_User get_singleUser(
int
UID)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.get_singleUser(UID);
}
/// <summary>
/// 查找login用户名,实现登录的安全验证
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public
L_User get_singleUser(
string
name)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.get_singleUser(name);
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="AUserPwd"></param>
/// <returns></returns>
public
int
UpdateUS(
string
UUserPwd)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.UpdateUS(UUserPwd);
}
/// <summary>
/// 检查登录(此方法有误)
/// </summary>
/// <param name="Author"></param>
/// <param name="UUserPwd"></param>
/// <param name="UUserRole"></param>
/// <returns></returns>
public
int
CheckLogin(
string
Author,
string
UUserPwd)
{
UserDAL userDal =
new
UserDAL();
return
userDal.CheckLogin(Author, UUserPwd);
}
/// <summary>
/// 检查用户权限
/// </summary>
/// <param name="Author"></param>
/// <returns></returns>
public
L_User checkAuthor(
string
Author)
{
UserDAL userDal =
new
UserDAL();
return
userDal.checkAuthor(Author);
}
/// <summary>
/// 检查用户名
/// </summary>
/// <param name="LoginName"></param>
/// <returns></returns>
public
int
CheckUser(
string
Author)
{
UserDAL userDal =
new
UserDAL();
return
userDal.CheckUser(Author);
}
/// <summary>
/// 验证旧密码是否相同
/// </summary>
/// <param name="Author"></param>
/// <returns></returns>
public
L_User Checkjiu(
string
Author)
{
UserDAL uDAL =
new
UserDAL();
return
uDAL.Checkjiu(Author);
}
}
}
|
接下来我们就可以开始在web页面cs中开始我们的功能调用了,实现编辑功能的一部分代码如下,PS:验证input的
话建议大家多写一些,JS在前台,本页面的验证,以及服务器端的验证,保证信息的安全性,养成好习惯。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
protected
void
ImageButton1_Click(
object
sender, ImageClickEventArgs e)
{
if
(TextBox1.Text.Trim().ToString() ==
""
)
{
lblMessage.Text =
"<font color=\"red\" size=\"2\">请输入用户名</font>"
;
NormalMethod.Show(
this
,
"请完整填写用户的信息"
);
return
;
}
if
(pwd.Text.Trim().ToString() ==
""
)
{
lblMessage.Text =
"<font color=\"red\" size=\"2\">请输入用户密码</font>"
;
NormalMethod.Show(
this
,
"请完整填写用户的信息"
);
return
;
}
if
(TextBox3.Text.Trim().ToString() ==
""
)
{
lblMessage.Text =
"<font color=\"red\" size=\"2\">请输入用户邮箱</font>"
;
NormalMethod.Show(
this
,
"请完整填写用户的信息"
);
return
;
}
if
(ddlGroup.SelectedIndex == 0)
{
lblMessage.Text =
"<font color=\"red\" size=\"2\">请输入用户组</font>"
;
NormalMethod.Show(
this
,
"请完整填写用户的信息"
);
return
;
}
if
(my97.Value.ToString() ==
""
)
{
lblMessage.Text =
"<font color=\"red\" size=\"2\">请输入正确的日期格式</font>"
;
NormalMethod.Show(
this
,
"请完整填写用户的信息"
);
return
;
}
UserService uService =
new
UserService();
if
(editor ==
"edit"
)
{
int
i = uService.UpdateUser(Convert.ToInt32(Session[
"UID"
].ToString()), TextBox1.Text.ToString(), pwd.Text.ToString(), TextBox3.Text.ToString(), DateTime.Now, ddlGroup.Text.ToString());
if
(i > 0)
{
NormalMethod.ShowAndRedirect(
this
,
"修改成功!(*^__^*)"
,
"UserGuan.aspx"
);
editor =
null
;
}
else
{
NormalMethod.ShowAndRedirect(
this
,
"修改失败!#(┬_┬)我的错,我改还不行吗?"
,
"UserGuan.aspx"
);
}
}
else
{
TextBox1.ReadOnly =
false
;
TextBox3.ReadOnly =
false
;
my97.Visible =
true
;
L_User lu =
new
L_User();
lu.Author = TextBox1.Text.ToString();
lu.UUserPwd = pwd.Text.ToString();
lu.UEmail = TextBox3.Text.ToString();
lu.UUserRole = ddlGroup.SelectedValue.ToString();
lu.UCreateTime =Convert.ToDateTime(my97.Value.ToString());
int
j = uService.AddUser(lu);
if
(j > 0)
{
NormalMethod.ShowAndRedirect(
this
,
"添加成功!(*^__^*)"
,
"UserGuan.aspx"
);
TextBox1.Text =
""
;
TextBox3.Text =
""
;
my97.Value =
""
;
pwd.Text =
""
;
}
else
{
NormalMethod.ShowAndRedirect(
this
,
"添加失败!#(┬_┬)我的错,我改还不行吗?"
,
"UserGuan.aspx"
);
}
}
}
|
上面的代码配上bootstrap就会达到一种很棒的效果,这里我就不截图了,最后会给大家看一个遍。
紧接着就是设计其他的网页所需的业务逻辑功能,如图,
后台的四操作把类库的功能都写好后就可以很容易的处理前台的问题了。这里的前台我是用了XML和Repeater的绑定方式。
Repeater的绑定:
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<asp:Repeater ID=
"BlogList"
runat=
"server"
>
<ItemTemplate>
<div
class
=
"title"
>
<a href=
'BlogShow.aspx?ID=<%# Eval("ID") %>'
title=
'<%# Eval("BlogTiltle") %>'
>
<%# Eval(
"BlogTiltle"
)%></a>
</div>
<div>
<p style=
"color:Gray"
>
<%#BLL.SystemTools.FixLengthString
(BLL.SystemTools.NoHTML(Eval(
"BlogContent"
).ToString()),300)%>...
<a href=
'BlogShow.aspx?ID=<%# Eval("ID") %>'
>[查看全文]</a>
</p>
</div>
<span style=
"font-size: small; color: Gray"
>
浏览(<%# Eval(
"Click"
) %>)
| 发布时间:
<%# Eval(
"CreateTime"
)%></span><br /><hr style=
"border: 0.5px Dotted gray"
/>
</ItemTemplate>
</asp:Repeater>
<a href=
"bowenList.aspx"
>查看全部博文>></a>
|
cs:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
bindRepeater();
}
}
//绑定Repeater的内容
protected
void
bindRepeater()
{
BlogService blogService =
new
BlogService();
BlogList.DataSource = blogService.getData();
BlogList.DataBind();
}
|
接着就是显示博文的界面了:
这就基本实现了博客的主要功能,下面来看看一些jQuery的知识,比如Ajax的验证,大家可以参考W3上的介绍学习,全面的了解后就可以去做一些图片的轮播和天气,text的显示效果,这里举一例,图片的轮播,下面是效果图,大家可以按照说明自己做做,如图,
3D gallery:
童话轮播:
还有最简单的轮播:
讲到这里基本上前台要做的就差不多了,对了忘说了,最后我想了想,由于是博客,所以就加了一个播放器,和XML很好的结合,实现了四操作和播放歌曲的功能,效果图和代码如下,
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<
object
type=
"application/x-shockwave-flash"
data="http:
//service.weibo.com/staticjs/weiboshow.swf?verifier=b92d5ce3&uid=1624424711&
width=230&height=500&fansRow=2&isTitle=1&
isWeibo=1&isFans=1&noborder=0&ptype=1&
colors=cfe1f3,fafcff,444444,5093d5"
width=
"230"
height=
"500"
id=
"pre_flash"
style=
"visibility: visible;"
>
<param name=
"wmode"
value=
"transparent"
/>
<param name=
"quality"
value=
"high"
/>
<param name=
"bgcolor"
value=
"#FFFFFF"
/>
<param name=
"align"
value=
"L"
/>
<param name=
"scale"
value=
"noborder"
/>
<param name=
"allowScriptAccess"
value=
"sameDomain"
/>
</
object
>
|
到这里前台的大体功能基本上就差不多了,下面的一些技术我分三期讲吧,有点多,已经三点了,大家明天先看着,我会继续更新,有时间的话。谢谢大家的支持!谢谢莉子姐,米米姐,蘑菇姐,和5CTO一起成长!加油!