网站性能买了空间和域名 就有网站后台了吗

当前位置: 首页 > news >正文

网站性能,买了空间和域名 就有网站后台了吗,中国建设教育协会的网站查询,体育西网站开发方案三层架构 DAL数据访问层: BooksRatingService各种service类定义各种使用sqlhelper定义数据库的操作方法将sql字段加载进去各种具体的数据操作的方法 BLL逻辑业务层#xff1a;BookManager各种manager类调用DAL层类方法定义对model类的操作方法 models实体类#xff1a;定义…三层架构 DAL数据访问层: BooksRatingService各种service类定义各种使用sqlhelper定义数据库的操作方法将sql字段加载进去各种具体的数据操作的方法 BLL逻辑业务层BookManager各种manager类调用DAL层类方法定义对model类的操作方法 models实体类定义实体类 设置 获得方法数据传输的中间媒介 web层视图文件布局 脚本 样式aspx文件布局aspx.cs文件进行数据与控件的交互 DAL中的sqlhelper定义数据库操作方法 Bin文件夹中引用dll文件 问题 为何需要BLL 层?不直接调用DAL中的方法 model类代码作为数据操作媒介 private DateTime createdTime; public DateTime CreatedTime { get { return createdTime; } set { createdTime value; } } SqlHelper类代码定义数据操作方法 
Method:readData DataSet Query sqlcmd Reader_data:ExecuteReader() DataSet:ExecuteDataset() Query_Data: ExecuteNonQuery(), insertData: ExecuteScalar() Sqlcmd_execute: PrepareCommand() //Databaseconnection strings public static readonly string ConnectionString ConfigurationManager.ConnectionStrings[BookShop].ConnectionString; ExecuteNonQuery ///summary ///执行SqlServer存储过程 ///注意不能执行有out 参数的存储过程 ////summary ///paramnameconnectionString连接字符串/param ///paramnamespName存储过程名/param ///paramnameparameterValues对象参数/param ///returns受影响的行数/returns public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues) { using (SqlConnection conn new SqlConnection(connectionString)) { SqlCommand cmd new SqlCommand(); PrepareCommand(cmd, conn, spName,parameterValues); int val cmd.ExecuteNonQuery(); return val; } } ExecuteReader ///summary ///  执行sql命令 ////summary ///paramnameconnectionString连接字符串/param ///paramnamecommandType命令类型/param ///paramnamecommandTextsql语句/参数化sql语句/存储过程名/param ///paramnamecommandParameters参数/param ///returnsSqlDataReader 对象/returns public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[]commandParameters) { SqlConnection conn new SqlConnection(connectionString); try { SqlCommand cmd new SqlCommand(); PrepareCommand(cmd,commandType, conn, commandText, commandParameters); SqlDataReader rdr cmd.ExecuteReader(CommandBehavior.CloseConnection); return rdr; } catch { conn.Close(); throw; } } ExecuteDataset //setthe data to the dataAdapter public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues) { using (SqlConnection conn new SqlConnection(connectionString)) { SqlCommand cmd new SqlCommand(); PrepareCommand(cmd, conn,spName, parameterValues); using (SqlDataAdapter da new SqlDataAdapter(cmd)) { DataSet ds new DataSet(); da.Fill(ds); return ds; } } } ExecuteScalar ///summary ///执行Sql命令 ////summary ///paramnameconnectionString连接字符串/param ///paramnamecommandType命令类型/param ///param namecommandTextsql语句/参数化sql语句/存储过程名/param ///paramnamecommandParameters参数/param ///returns执行结果对象/returns public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[]commandParameters) { SqlCommand cmd new SqlCommand(); using (SqlConnection conn new SqlConnection(connectionString)) { PrepareCommand(cmd,commandType, conn, commandText, commandParameters); object val cmd.ExecuteScalar(); return val; } } PrepareCommand ///summary ///设置一个等待执行的SqlCommand对象 ////summary ///paramnamecmdSqlCommand 对象不允许空对象/param ///paramnameconnSqlConnection 对象不允许空对象/param ///paramnamecommandTextSql 语句/param ///paramnamecmdParmsSqlParameters  对象,允许为空对象/param private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms) { //打开连接 if (conn.State ! ConnectionState.Open) conn.Open(); //设置SqlCommand对象 cmd.Connection conn; cmd.CommandText commandText; cmd.CommandType commandType; if (cmdParms ! null) { foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } } DAL类代码cast datas to models 设置/获得参数传入sqlhelper方法 得到数据映射到实体类 用实体类对数据进行具体操作 Method: get list of items:GetBookRatings(int bookId),GetBookRatings(string safeSql) insert Data: AddBookRating() get Data: GetBookRatings() BooksRatingService: //database connection strings string connection ConfigurationManager.ConnectionStrings[BookShop].ConnectionString; AddBookRating //method: insert data by casting datato models public bool AddBookRating(BookRatings bookrating) { string sql INSERTBookRatings (BookId,UserId,Rating,Comment) VALUES(BookId, UserId, Rating, Comment); sql ; SELECTIDENTITY; SqlParameter[] para new SqlParameter[] { new SqlParameter(BookId,bookrating.BookId), new SqlParameter(UserId,bookrating.User.Id), new SqlParameter(Rating,bookrating.Rating), new SqlParameter(Comment,bookrating.Comment) }; bookrating.Id Convert.ToInt32(SqlHelper.ExecuteScalar(this.connection, CommandType.Text, sql, para)); return bookrating.Id 0; } GetBookRatings //methodgetspecially data according to terms ///summary ///根据书的Id得到其评价信息 ////summary ///paramnamebookId/param ///returns/returns //getbookRatings list of specially book by id public ListBookRatings GetBookRatings(int bookId) { string sql select * frombookratings where bookid bookId ; return this.GetBookRatings(sql); } //getlist of bookRatings by sql private ListBookRatings GetBookRatings(string safeSql) { ListBookRatings list new ListBookRatings(); DataSet ds SqlHelper.ExecuteDataset(this.connection, CommandType.Text, safeSql); if (ds.Tables.Count 0) { DataTable dt ds.Tables[0]; //castdata to models by traversing dataRow foreach (DataRow row in dt.Rows) { BookRatings brating new BookRatings(); brating.Id (int)row[Id]; brating.BookId (int)row[BookId]; brating.Rating (int)row[Rating]; int userId (int)row[userid]; brating.User new UserService().GetUserById(userId); brating.Comment (string)row[Comment]; brating.CreatedTime (DateTime)row[CreatedTime]; list.Add(brating); } } return list; } GetCategoryById //cast data to model public Category GetCategoryById(Int32 id) { string sql SELECT * FROMCategories WHERE Id Id; Category category null; using (SqlDataReader reader SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, sql, new SqlParameter(Id, id))) { if (reader.Read()) { category new Category(); category.Id (int)reader[Id]; category.Name (string)reader[Name]; category.PId (int)reader[PId]; } } return category; } BLL类代码get and set models List Get models list public  ListCategory GetCategories() { //调用DAL类方法返回实体类列表 return new CategoryService().GetCategories(); } Set Models list
public  void AddCategory(Category category) { //调用DAL类方法定义添加实体类 new CategoryService().AddCategory(category); } Get specially terms of models list byparameter public  ListBookRatings GetBookRatings(int bookId) { return new BooksRatingService().GetBookRatings(bookId); } Web Common.master 通用视图 用于引用提高代码重用度 Common.master.cs 从数据库读取数据定义视图 Admin.master 管理者通用视图 Admin.master.cs 从数据库读取数据定义视图 #region Method_name 代码显示缩进 #endregion 注释说明方法用途参数返回对象 ///summary ///执行Sql命令 ////summary ///paramnameconnectionString连接字符串/param ///paramnamecommandType命令类型/param ///paramnamecommandTextsql语句/参数化sql语句/存储过程名/param ///paramnamecommandParameters参数/param ///returnsDataSet 对象/returns App_code: Category.cs public class Category { public int Id { get; set; } public string Name { get; set; } public int Pid { get; set; } public int SortNum { get; set; } } Web.Config configuration connectionStrings addnameBookShopconnectionStringserver.;uidsa;pwdsa;databaseBookShopPlus/ /connectionStrings system.web compilationdebugtruetargetFramework4.0/ /system.web /configuration Web.SiteMap siteMapxmlnshttp://schemas.microsoft.com/AspNet/SiteMap-File-1.0 siteMapNodeurl\Default.aspxtitle第三波  description siteMapNodeurlBookList.aspxtitle图书列表页  description/ siteMapNodeurlSearch.aspxtitle搜索页  description/ siteMapNodeurltitle订单查询  description / siteMapNodeurlShoppingCart.aspxtitle购物车  description / siteMapNodeurl\BookDetail.aspxtitle图书详细页  description / siteMapNodeIdurltitle会员后台description siteMapNodeurl\Membership\Register.aspx  title用户注册  description / siteMapNodeurl\Membership\Login.aspx  title用户登录  description / siteMapNodeurl\Membership\UserModify.aspxtitle修改个人信息  description / siteMapNodeurl  title退出登录  description / /siteMapNode siteMapNodeIdurl\Admin\Default.aspxtitle管理员后台description siteMapNodeurltitle用户管理description siteMapNodeurl\Admin\UserList.aspxtitle管理用户description / siteMapNodeurl\Admin\UserStateManage.aspxtitle状态管理description / siteMapNodeurl\Admin\UserDetails.aspx  title修改用户资料  description / /siteMapNode siteMapNodeurltitle图书管理description siteMapNodeurl\Admin\CategoryManage.aspxtitle添加图书分类description / siteMapNodeurl\Admin\BookCategory.aspxtitle为书籍分类description / siteMapNodeurl\Admin\BookDetail.aspxtitle图书详细信息description / siteMapNodeurl\Admin\BookList.aspxtitle图书列表description / siteMapNodeurl\Admin\RecomBookList.aspxtitle推荐图书description / /siteMapNode siteMapNodeurltitle订单管理description siteMapNodeurl\Admin\OrderList.aspxtitle审核订单description / siteMapNodeurl\Admin\OrderDetail.aspxtitle详细订单description / /siteMapNode siteMapNodeurl\Membership\LoginOut.aspxtitle退出description管理员退出 /siteMapNode /siteMapNode /siteMapNode /siteMap TreeView.xml Booksurldefault.aspxtitle新书推荐description Booktitle C#urlBookList.aspx?typeid1description / Booktitle.NETurlBookList.aspx?typeid25description / BooktitleASP.NETurlBookList.aspx?typeid29description / BooktitleBasic VB VB ScripturlBookList.aspx?typeid16description / BooktitleC C VC VCurlBookList.aspx?typeid15description / BooktitleCSS DivurlBookList.aspx?typeid4description / BooktitleHTML XMLurlBookList.aspx?typeid22description / BooktitleJ2EEurlBookList.aspx?typeid2description / BooktitleJava Script JavaurlBookList.aspx?typeid21description / BooktitleJSPurlBookList.aspx?typeid31description / BooktitlePerlurlBookList.aspx?typeid26description / BooktitleWINDOWSurlBookList.aspx?typeid35description / Booktitle电子商务urlBookList.aspx?typeid38description / Booktitle计算机等级考试urlBookList.aspx?typeid17description / Booktitle计算机理论urlBookList.aspx?typeid20description / Booktitle其他urlBookList.aspx?typeid28description / Booktitle网站开发urlBookList.aspx?typeid27description / /Books Aspx代码 HTMLcssjavascript布局 普通控件 label/label nbsp;//表示空格 //页面链接 a hrefRegister.aspx还没有注册/a //单选框 input typecheckbox name checkedchecked / //图片链接 img srcImages/login_in.gif alt会员登录 /
//调用css
link hrefCss/member.css relstylesheet typetext/css / //表单用form
form idform1 runatserver/form //引用页面 % Page TitleLanguageC# MasterPageFile
/Admin/Admin.master AutoEventWireuptrueCodeFileDefault.aspx.cs InheritsAdmin_Default % //内容载体控件 asp:Content IDContent1 ContentPlaceHolderIDContentPlaceHolder1 RunatServer管理员首页 /asp:Content Javascript script languagejavascript function checkInput() { var loginId document.getElementById(txtLoginId).value; if (loginId ) { alert(用户名不能为空); return false; } var pwd document.getElementById(txtLoginPwd).value; var pwdAgain document.getElementById(txtPwdAgain).value; if (pwd ! pwdAgain) { alert(两次输入的密码不一致); return false; } return true; } /script script languagejavascript function selectAll(checkAll) { var items document.getElementsByTagName(input); for (i 0; i items.length; i) { if (items[i].type checkbox) { items[i].checked checkAll.checked; } } } /script Asp控件 //下拉框  数据来自属性中items asp:DropDownList IDddlCategory runatserver Width172px AutoPostBackTrue onselectedindexchangedddlCategory_SelectedIndexChanged1/ //输入框 asp:TextBox IDtxtLoginPwd runatserver TextModePassword CssClassopt_input/ //按钮 asp:Button IDbtnRegister runatserver Text确定了马上提交 CssClassopt_sub onclickbtnRegister_Click / 网格视图列名来自属性Columns数据来自cs文件操作 asp:GridView IDgvBooks runatserver AllowPagingTrue
AutoGenerateColumnsFalse BackColorLightGoldenrodYellow BorderColorTan BorderWidth1px CellPadding2 ForeColorBlack GridLinesNone onpageindexchanginggvBooks_PageIndexChanging onrowdataboundgvBooks_RowDataBound Width771px AlternatingRowStyle BackColorPaleGoldenrod / Columns asp:TemplateField ItemStyle-Width60px ItemStyle-HorizontalAlignCenter HeaderTemplate asp:CheckBox IDCheckBox2 runatserver Text全选 onclickselectAll(this) / /HeaderTemplate ItemTemplate asp:CheckBox IDCheckBox1 runatserver / /ItemTemplate ItemStyle HorizontalAlignCenter Width60px/ItemStyle /asp:TemplateField asp:BoundField DataFieldTitle HeaderText书名 / asp:BoundField DataFieldauthor HeaderText作者 / asp:TemplateField HeaderText出版社/asp:TemplateField asp:BoundField DataFieldUnitPrice HeaderText单价 / /Columns FooterStyle BackColorTan / HeaderStyle BackColorTan Font-BoldTrue / PagerStyle BackColorPaleGoldenrod ForeColorDarkSlateBlue HorizontalAlignCenter / SelectedRowStyle BackColorDarkSlateBlue ForeColorGhostWhite / SortedAscendingCellStyle BackColor#FAFAE7 / SortedAscendingHeaderStyle BackColor#DAC09E / SortedDescendingCellStyle BackColor#E1DB9C / SortedDescendingHeaderStyle BackColor#C2A47B / /asp:GridView 树状结构:调用web.sitemap文件数据 div idsubnav asp:TreeView IDTreeView1 runatserver DataSourceIDSiteMapDataSource1 /asp:TreeView br / asp:SiteMapDataSource IDSiteMapDataSource1 runatserver ShowStartingNodeFalse StartingNodeUrl/Admin/Default.aspx / /div 位置选择内容控件 div idbreadcrumb您现在的位置 asp:SiteMapPath IDSiteMapPath1 runatserver /asp:SiteMapPath /div div asp:ContentPlaceHolder IDContentPlaceHolder1 runatserver /asp:ContentPlaceHolder /div 判断是否为空 asp:RequiredFieldValidator IDRequiredFieldValidator1 runatserver ControlToValidatetxtLoginPwd ErrorMessage密码不能为空/ 两次密码相同 asp:CompareValidator IDCompareValidator1 runatserver ControlToComparetxtLoginPwd ControlToValidatetxtPwdAgain DisplayDynamic ErrorMessage两次密码不一致/ 邮件格式 asp:RegularExpressionValidator IDRegularExpressionValidator1 runatserver ControlToValidatetxtEmail ErrorMessageEmail格式不正确 ValidationExpression\w([.]\w)\w([-.]\w).\w([-.]\w)*/  手机格式 asp:RegularExpressionValidator IDRegularExpressionValidator2 runatserver ControlToValidatetxtPhone ErrorMessage手机号码格式不正确 ValidationExpression1\d{10}/ 出生日期格式 asp:CompareValidator IDCompareValidator2 runatserver ControlToValidatetxtBirthday ErrorMessage出生日期格式不正确 OperatorLessThan TypeDate/ 提供验证码 asp:TextBox IDtxtCode CssClassopt_input runatserver/ cc1:SerialNumber IDsnCode runatserver/ Alert asp:Literal IDlitAlert runatserver/ Aspx.cs代码:页面逻辑
//调用实体类和BLL层操作数据 using BookShop.BLL; CategoryManager categoryManager new CategoryManager(); BookManager bookManager new BookManager(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { bindCategory(); categoryId Convert.ToInt32(ddlCategory.SelectedValue); bindBooks(); } } set data to widget private void bindCategory() { ddlCategory.DataSource categoryManager.GetCategories(); ddlCategory.DataTextField Name; ddlCategory.DataValueField Id; ddlCategory.DataBind(); } set data to gridView widget private void bindBooks() { gvBooks.DataSource bookManager.GetBooks(categoryId); gvBooks.DataBind(); } protected voidgvBooks_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType DataControlRowType.DataRow) { e.Row.Attributes.Add(onmouseover, currentColorthis.style.backgroundColor;this.style.backgroundColorred); e.Row.Attributes.Add(onmouseout, this.style.backgroundColorcurrentColor); } } // protected voidgvBooks_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvBooks.PageIndex e.NewPageIndex; categoryId Convert.ToInt32(ddlCategory.SelectedValue); bindBooks(); } Category selectedIndexChaged protected voidddlCategory_SelectedIndexChanged1(object sender, EventArgs e) { categoryId Convert.ToInt32(ddlCategory.SelectedValue); bindBooks(); } onClickListener UserManager userManager new UserManager(); protected void btnLogin_Click(object sender, EventArgs e) { string loginId txtLoginId.Text.Trim(); string loginPwd txtLoginPwd.Text.Trim(); BookShop.Models.User user new BookShop.Models.User(); string message ; if(userManager.Login(loginId, loginPwd, ref user, ref message)) { if (user.UserRole.Name 管理员) Response.Redirect(
/Admin/Default.aspx); else Response.Redirect(~/Default.aspx); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), alertError, scriptalert( message )/script); } } Note //可以用Literal控件的Text属性存放脚本客户端不会生成任何其他标记只有脚本 // litAlert.Text scriptalert(验证码错误)/script; //可以用Label控件的Text属性存放脚本但客户端会生成一个span标记来存放脚本 // lblAlert.Text scriptalert(验证码错误)/script; //将脚本生成在/form之前  消息框弹出时可以看到页面其他内容 Page.ClientScript.RegisterStartupScript(this.GetType(), jsCodeError, scriptalert(验证码错误)/script); //将脚本生成在form标记之后 消息框弹出时看不到页面其他内容 //Page.ClientScript.RegisterClientScriptBlock(this.GetType(),jsCodeError, scriptalert(验证码错误)/script); //将脚本生成在Html的顶部 消息框弹出时看不到页面其他内容 //Response.Write(scriptalert(验证码错误)/script); 方法实现 SqlParameter SqlParameter[] para new SqlParameter[] { new SqlParameter(BookId,bookrating.BookId), new SqlParameter(UserId,bookrating.User.Id), new SqlParameter(Rating,bookrating.Rating), new SqlParameter(Comment,bookrating.Comment) }; SqlDataReader using (SqlDataReader reader SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, sql, new SqlParameter(Id, id))) { if (reader.Read()) { category new Category(); category.Id (int)reader[Id]; category.Name (string)reader[Name]; category.PId (int)reader[PId]; } } Traverse to Get List public  ListBookRatings GetBookRatings(int bookId) { return new BooksRatingService().GetBookRatings(bookId); } private ListBookRatings GetBookRatings(string safeSql) { ListBookRatings list new ListBookRatings(); DataSet ds SqlHelper.ExecuteDataset(this.connection, CommandType.Text, safeSql); if (ds.Tables.Count 0) { DataTable dt ds.Tables[0]; //castdata to models by traversing dataRow foreach (DataRow row in dt.Rows) { BookRatings brating new BookRatings(); brating.Id (int)row[Id]; brating.BookId (int)row[BookId]; brating.Rating (int)row[Rating]; int userId (int)row[userid]; brating.User new UserService().GetUserById(userId); brating.Comment (string)row[Comment]; brating.CreatedTime (DateTime)row[CreatedTime]; list.Add(brating); } } return list; }