PetShop3.x学习笔记12-Web学习笔记
来源:互联网 发布:黑客收徒网站源码 编辑:程序博客网 时间:2024/04/27 21:30
一、 Web主要功能:
1、 页面展现
2、 数据缓存——页面输出缓存、数据缓存、对象缓存
二、 实现细节:
1、 网站页面文件功能说明
文件名
.aspx文件
.cs文件
default
1、使用了两个用户控件,Banner(页面底端)和NavBarNoMenu(页面顶端)
没有特殊作用
Banner
在页面底端,用于显示用户最感兴趣的宠物的广告图片
使用到了AccountController.cs文件
AccountController
无
1、用于实现一组对用户账户进行操作的功能:如创建、更新账户,用户登录、注销,返回账号对象,取回当前用户最喜爱的宠物类别等
2、跟Web层打交道的类(从Web层引用的命名空间可以看出),只有BLL和Model中的类。在实例化的时候一定要注意,实例化的是哪个层的类。如BLL层叫Account,而Model层叫AccountInfo
Category
1、注意:使用另一个命名空间(即使是同一个Assembly)中的类的方法!例:
<%@ Register TagPrefix="controls" Namespace="PetShop.Web.Controls" Assembly="PetShop.Web" %>
2、开始涉及到翻页程序的问题!将SimplePager和DataGrid对照着看,可以知道在控件中使用模板列的方式,以及控件中的实现方式!
1、最主要的就是一个PageChanged()方法,响应了由SimplePager定义的PageIndexChanged事件
2、处理了该从哪里取数据,即该显示什么数据的问题
3、若数据已被显示过,则直接从缓存中读取数据,并将SimplePager对象绑定数据源;若数据没有被显示过,则实例化BLL层的对象,从数据库读取数据(IList引用),并缓存起来,然后将SimplePager对象绑定数据源
4、绑定数据源的事件又引发了SimplePager对象的OnDataBinding()事件处理程序
SimplePager
无
1、为了使SimplePager类使用继承于IList接口的数据源,所以重写了Repeater的DataSource属性
2、对外公布了PageIndexChanged事件,可供客户事件处理程序使用
3、主要用于计算(当前)页码,以及根据总页码及当前页码,决定是否显示“向前”和“向后”的(图片)按钮
4、不规定数据源,使这个翻页程序可在很多场合重用
5、SimplePager控件似乎不应该在每次翻页的时候都检查数据源啊?!
NavBar.ascx
1、导航条。包括主图片、分情况显示登录或注销输入框、Category项目等
2、由于是演示程序,这里的Category被写死在页面当中,当类别可以动态修改的时候不能使用,参考价值不大
1、主要用于根据用户身份认证情况显示登录选项和注销选项
Items
1、显示Items列表和显示Products列表(Category文件)实现方式是类似的
2、也是在页面中使用了SimplePager控件,用于根据“当前给定的数据源”进行数据绑定,并翻页显示
1、与Category.aspx.cs完成的功能相同
ItemDetails
1、显示某个Item的具体细节情况,如单价、库存数量等
2、如果选中,可点击“添加”按钮,将该Item添加到购物车(在购物车页面中调整要购买该Item的数量)
1、读取用户请求的ItemId
2、实例化BLL层的对象,根据ItemId得到一个ItemInfo实例
3、将此ItemInfo实例的各个属性分别赋值给页面上的各Label,并显示
CleanString.cs
无
1、用于过滤用户输入的字符,如去掉空格,替换掉怪字符等
2、加一些更特殊的过滤选项,可以使用在自己的项目中
ShoppingCart
1、非登录用户也可以向购物车中添加物品,但当下订单的时候会出现登录框
2、主要用于显示当前购物车中的物品条目及数量
1、用于处理用户点击“Update”或“Remove”时,重新计算某个Item的费用、总共的费用或移除某个Item
2、其他响应购物车事件的操作
ViewStatePager.cs
1、主要用于处理购物车中物品显示时的翻页问题
2、继承于SimplePager类,大部分的方法都由重写SimplePager类的同名方法得到
3、比SimplePager类多定义了两个方法:PreviousClicked()和MoreClicked()
CartController.cs
无
1、主要功能:对购物车的存取操作
2、创建或从Session中取出现有的购物车;将修改后的购物车保存回Session
3、购买购物车中现有的物品——调用BLL层,插入一个新的订单(使用了BLL层的OrderInsert.cs类,这个类是应用“分布式事务”进行处理的典型案例)
4、向Session中保存或取出用户信用卡信息和邮递地址信息等
CreateAccount
1、用于显示用户注册时的界面
2、其中的My Address和My Preference都采用了独立的User Control
1、对用户输入的信息,都要使用CleanString类进行过滤
2、使用了Model中的AccountInfo和AccountController类,将用户注册的信息添加到数据库中
MyAccount
1、只有一个Label标签,用于在用户“账户创建”、“用户账户更新”和“用户登录”的时候显示相应的信息
1、根据用户的动作(create/update/signin),给Label绑定不同的显示内容
EditAccount
1、显示当前用户的注册信息
1、从Session中读取当前用户的注册信息,并绑定到页面的各显示控件上
2、调用AccountController中定义的UpdateAccount()方法,将用户对账户信息的更改保存回数据源
SignOut
1、显示用户成功注销的信息
1、调用AccountController中定义的LogOut()方法,注销当前用户
Search
1、显示搜索结果
1、针对用户输入的关键字,调用底层定义的方法进行搜索
2、根据关键字的缓存是否存在,判断针对此关键字的查询结果是否已经被缓存过。如果已经缓存过,则直接从缓存中提取出结果集(IList接口引用);若没有缓存过,则要调用底层方法,返回结果集,然后缓存起来
3、但这种缓存机制会出现问题!如果在查询结果被缓存过之后,即使数据库中的数据源内容更改了,显示出来的查询结果仍然不会被更新!!!
4、关闭当前浏览器也不行!缓存不是针对当前会话的!!!而似乎是针对全局的,也就是Application级的!
WebServices
WebServices.asmx
1、使用了BLL层的OrderRead类
2、根据传入的orderId,返回相应的OrderInfo对象
2、 表示层主要有以下几大块功能:
(1) 用户注册
(2) 用户登录、注销
(3) 按照Category、Product、Item的层次进行浏览
(4) 购物车:由ShoppingCart.aspx、Cart.ascx、CartController.cs组成。还有BLL中的Cart.cs和Model中的CartItemInfo.cs
(5) 订单生成
(6) 搜索
3、 AccountController.cs和CartController.cs类,名称虽然叫做xxxController,但是实际作用却类似于MVC模式中的M!这是一组对“数据存储”(无论是数据库或购物车Session)进行操作的类
三、 启发:
1、 一下子看不懂没关系,可以分散着,看每个部分实现的功能,然后再进行整体考虑——关键的问题是——坚持!!!!!!
2、 代码中,若涉及到使用某“字符串”进行赋值的时候,大都是在代码头部使用常量,将这些要赋值的字符串先赋予常量。在真正的代码段当中只使用这些定义好的常量就可以了!
3、 组织很多同类型对象的方法——使用ArrayList;返回很多同类型对象的方法——返回ArrayList的引用
四、 问题:
1、 AutoEventWireup属性?
2、 enableSessionState="ReadOnly"?
3、 FormsAuthentication类的用法?
4、 AccountController.cs文件,创建用户的时候(CreateAccount()方法),又写Session又写Cookie,有什么用?
5、 OnLoad()方法的用法?!与Page_Load()方法的异同?
6、 ASP.NET缓存的问题——在知识漏洞的文档当中已经列出
- PetShop3.x学习笔记12-Web学习笔记
- PetShop3.x学习笔记12-Web学习笔记
- PetShop3.x学习笔记1-Model
- PetShop3.x学习笔记2-IDAL
- PetShop3.x学习笔记3-Utility
- PetShop3.x学习笔记1-Model
- PetShop3.x学习笔记2-IDAL
- PetShop3.x学习笔记3-Utility
- PetShop3.x学习笔记1-Model
- PetShop3.x学习笔记2-IDAL
- PetShop3.x学习笔记3-Utility
- PetShop3.x学习笔记3-Utility
- PetShop3.x学习笔记2-IDAL
- PetShop3.x学习笔记1-Model
- PetShop3.x学习笔记6-SQLServer学习笔记
- PetShop3.x学习笔记6-SQLServer学习笔记
- PetShop3.x学习笔记7-DALFactory学习笔记
- PetShop3.x学习笔记11-BLL学习笔记
- ASP.NET中实现MSN通知消息功能
- [转载]程序员的十种级别
- 一些有趣的forum
- 用.net操作word
- 放弃也是一种美丽
- PetShop3.x学习笔记12-Web学习笔记
- IBM developerWorks中国近期经典PHP文章列表
- 今天执行进入状态
- JAVA与模式读书笔记(一)
- 2月27日——3月5日:新闻采访写作
- 初来乍到,请多指教!
- properties例子
- 同时安装sql2000和sql2005,经验点滴
- 如何让一个Form显示在另外一个Form上的一个控件上