[教程]HTTP请求流程(二)----Telnet模拟HTTP请求

mikel阅读(590)

上一部分"流程简介", 我们大致了解了下HTTP请求的流程,这一篇我向大家介绍下如何利用Telnet来模拟Http请求—访问百度。
      我们直接开始吧!
      1、打开"运行"->cmd进入命令环境;
      2、输入"telnet www.baidu.com 80",回车后 ,屏幕为全黑,此时我们利用快捷键"Ctrl+](右中括号)"来打开本地回显功能,这样我们就可以看见我们所打的东西了,如图:(注本阶段执行过程和以 下的过程均要求操作时间尽可能短,因为时间一长,便会被认为断开连接。)

      3、单击回车,进行编辑状态。
      4、输入:"GET / HTTP/1.1"后回车,在第二段接着输入:"HOST:"然后按回车,这样一个简单的HTTP请求就完成了,接着我人只要再按下回车,便向服务器递交 这个请求了。如图:(我们来看一下这个是什么意思:GET表示请求方式,/表示请求的根目录下的文件,HTTP/1.1表示HTTP协议版本,HOST就 是一个消息头,据某些朋友说1.1的版本一定要加一个"HOST:"可是我实验后发现"HOST :"不加仍旧可以正常发送请求,但是GET HTTP这个必须大写,否则就该请求无法发送)

      5、接收服务器返回,这步其实不需要我们来做,因为当我们发送请求后,只需几秒钟,我们便会收到来自服务器反应.

 
      6、这样,请求就算完成了。下面我们在百度中搜一下"1",浏览器中的地址应该是:http://www.baidu.com/s?wd=1.看看请求是怎么样的

      怎么样,大家会了吗?以上只是用GET方式进行请求,当然还可以用POST方式进行请求,只是POST我这不方便做实验,所以就不写了。大概的格式给大家参考下:
      POST /localhost/login.aspx HTTP/1.1
      HOST:
      Content-Type:application/x-www-form-urlencoded
      Content-Length:10
      
      uid=xxxxxx
参考:
1.张孝祥老师的HTTP协议详解
2.关于HTTP的请求头可以参考:http://hi.baidu.com/ʫչ/blog/item/13c2e3ddb3a133ee77c638cd.html

[控件].Net让你的实体字段和页面上的控件映射,自动绑定 -- ObjectBinding1.0

mikel阅读(750)

背景:使用ASP.NET开发,在编辑或新增一条记录时,你要把你的数据一个个赋值到页面上的控件去如:
Job job=…..;//获取一个Job实体
this.textbox1.Text=job.Name;
this.textbox2.Text=job.Position;
this.DropDownList1.SelectedValue=job.Grade;
….
….
由于基于bs的限制,控件不能想cs那样有(DataBindings)高级属性,于是在这种情况下,我自己封装了一个类似于中间件的控件ObjectBinding,把实体字段和页面上的控件映射,实现自动绑定。
下面就演示一下,如何在ASP.NET上使用:
1 首先把这控件拖拽到页面上:

2 设置ObjectBindingSourceTypeItemsMappings属性
SourceType即你的实体类型,类似与ObjectDataSource空间的TypeName,会自动加载所有的类型

ItemsMappings即建立控件与字段的映射,都只需要下拉选择一下就行

3 OK,基本的设置就这么多,现在我们在后台写些代码:

public partial class _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!Page.IsPostBack)
        
{
            ObjectBinding1.DataSource 
= (new ClassLibrary.Job()).getInstance();
            ObjectBinding1.DataBind();
        }

 
    }


    
protected void Button1_Click1(object sender, EventArgs e) {
        ObjectBinding1.ControlBind();
        ClassLibrary.Job Job 
= ObjectBinding1.DataSource as ClassLibrary.Job;

        Response.Write(
"Job.ID:" + Job.ID + "————–Job.Name:" + Job.Name);
    }

}


好了到此就能很好地显示出来了,看看效果

到此,就简单地介绍这么多,至于源码自己下载了去看吧,希望大家提些宝贵意见:)
源码下载

[Linq]在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Pa

mikel阅读(656)

构建业务外观层(Business Facade Layer
所有业务逻辑将在这一层实现。一般而言,这一层负责处理数据和在表现层与数据访问层之间传递数据。这一层从物理上提供上层接口隔离表现层代码和 数据访问层代码,ASP.NET页面不能直接与数据访问层交互。相反,页面应该调用业务外观层的方法。图3.1 展示了业务外观层的详细视图。

图3.1:业务外观层-详细视图
 
在我们的示例程序中,业务外观层仅仅包含一个组件-BFLCustomer。示例代码如下:
代码片段1.2:业务外观层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess;
using System.Data.Linq;
using DataLinq;
 
namespace BusinessFacade
{
    public class BFLCustomer
    {
        private DALCustomer objDataAccess = new DALCustomer();
 
        public Table<Customer> SelectRecordAll()
        {
            return objDataAccess.SelectRecordAll();
        }
 
        public Customer SelectRecordByID(string customerID)
        {
            return objDataAccess.SelectRecordByID(customerID);
        }
 
        public List<Customer> SelectRecordByIDListable(string customerID)
        {
            return objDataAccess.SelectRecordByIDListable(customerID);
        }
 
        public string InsertRecord(Customer localTable)
        {
            return objDataAccess.InsertRecord(localTable);
        }
 
        public void UpdateRecord(Customer localTable)
        {
            objDataAccess.UpdateRecord(localTable);
        }
 
        public void DeleteRecord(string customerID)
        {
            objDataAccess.DeleteRecord(customerID);
        }
 
        public Table<Order> SelectAllOrder()
        {
            return objDataAccess.SelectAllOrder();
        }
 
        public Table<Order_Detail> SelectAllOrderDetail()
        {
            return objDataAccess.SelectAllOrderDetail();
        }
    }
}
 
BFLCustomer 组件包括下面类图所示的公共方法列表,这些方法用来与数据访问层交换。
注:业务外观层没有创建DataContext类的实例,因此它不能够实现任何数据访问逻辑。
BFLCustomer 组件的类图如下:

图3.2:业务外观层 – 类图
EntLib.com 开源小组注:本文翻译《Building Multi-Tier Web Application in .NET 3.5 Framework Using LINQ to SQL》。后面内容待续。欢迎交流LINQ相关技术。

上几篇文章:
在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1)
在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 2)
在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 3)

[代码]Window的onunload和onbeforeunload事件

mikel阅读(903)

以下是指在js中实现,而非 这种方法!
因为这样是在unload掉body的时候触发,而无聊任何浏览器,都会在关闭的时候unload掉body的!
模型1:
function close(){
alert(“sdfsdfsdf”);
}
window.onbeforeunload=close;
模型2:
function close(){
if(document.body.clientWidth-event.clientX< 170&&event.clientY< 0||event.altKey) { alert("sdfsdfsdf"); } } window.onbeforeunload=close; 对于模型1: 1).刷新,多窗口和单窗口都适合. 2).单窗口ie关闭整个ie触发. 3).ie7多窗口中关闭单页触发 4)其他多窗口刷新触发.关闭单个和关闭整个都不触发 对于模型2: 1).ie单窗口 和ie7多窗口,都要关闭整个浏览器才触发 2).其他多窗口浏览器刷新.关闭单页,关闭整个都不触发

[代码]标题栏闪烁

mikel阅读(804)

title_tmp1=document.title
if
(title_tmp1.indexOf(">>")!=-1){
title_tmp2=title_tmp1.split(">>");
title_last=" —> "+title_tmp2[1];
title_last=title_last + " —> " + title_tmp2[2];
}else{
if (title_tmp1.indexOf("——")!=-1){
title_tmp2=title_tmp1.split("——");
title_last=" —> "+title_tmp2[1];
if (title_last==" —> "){title_last=" —> "};
if (title_last==" —> "){title_last=" —> "};
}
else {    title_last="by:globetour"}
}
title_new="黑与白"+title_last+""
step=0
function flash_title()
{
step++
if (step==7) {step=1}
if (step==1) {document.title=&#39;◆◇◇◇&#39;+title_new+&#39;◇◇◇◆&#39;}
if (step==2) {document.title=&#39;◇◆◇◇&#39;+title_new+&#39;◇◇◆◇&#39;}
if (step==3) {document.title=&#39;◇◇◆◇&#39;+title_new+&#39;◇◆◇◇&#39;}
if (step==4) {document.title=&#39;◇◇◇◆&#39;+title_new+&#39;◆◇◇◇&#39;}
if (step==5) {document.title=&#39;◇◇◆◇&#39;+title_new+&#39;◇◆◇◇&#39;}
if (step==6) {document.title=&#39;◇◆◇◇&#39;+title_new+&#39;◇◇◆◇&#39;}
setTimeout("flash_title()",180);
}
flash_title()
***把上面这段:
if (step==7) {step=1}
if (step==1) {document.title=&#39;◆◇◇◇&#39;+title_new+&#39;◇◇◇◆&#39;}
if (step==2) {document.title=&#39;◇◆◇◇&#39;+title_new+&#39;◇◇◆◇&#39;}
if (step==3) {document.title=&#39;◇◇◆◇&#39;+title_new+&#39;◇◆◇◇&#39;}
if (step==4) {document.title=&#39;◇◇◇◆&#39;+title_new+&#39;◆◇◇◇&#39;}
if (step==5) {document.title=&#39;◇◇◆◇&#39;+title_new+&#39;◇◆◇◇&#39;}
if (step==6) {document.title=&#39;◇◆◇◇&#39;+title_new+&#39;◇◇◆◇&#39;}
换成:
if (step==5) {step=1}
if (step==1) {document.title=&#39;☆° .★·&#39;+title_new+&#39;.★·☆° &#39;}
if (step==2) {document.title=&#39;·☆° .★&#39;+title_new+&#39;★·☆° .&#39;}
if (step==3) {document.title=&#39;★·☆° .&#39;+title_new+&#39;·☆° .★&#39;}
if (step==4) {document.title=&#39;.★·☆° &#39;+title_new+&#39;☆° .★·&#39;}
可以得到另外一种效果哦!

[指南]ASP.NET学习路线

mikel阅读(875)

如果你已经有较多的面向对象开发经验,跳过以下这两步:
  第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NETASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去!
   第二步 对.NET Framework类库有一定的了解 可以通过开发Windows Form应用程序来学习.NET Framework。ASP.NET是建构在.NET Framework之上的技术,你对.NET Framework了解得越深,学习ASP.NET就越快。 举个例子:下面简单列出几个对掌握ASP.NET非常重要的概念: 对象的内存模型,委托,事件,多线程,程序集和应用程序域,安全模型 .NET Framework当然还有许多其它的东西,但不理解与把握清楚上述这些东西,是很难真正把握ASP.NET的。 出于急迫的心情与现实的考虑,不少人没有扎实的面向对象基础就想直接学习ASP.NET,其结果只能是欲速则不达。 在具备了OO基础之后,以下是具体的学习ASP.NET技术步骤。
  第一步:学习HTML与CSS
  这并不需要去学一大堆的诸 如Dreamweaver,Firework之类的各种网页设计工具,关键是理解HTML网页嵌套的block结构与CSS的box模型。许多 ASP.NET控件最后都必须转化为HTML。而且,div+CSS是当前主流的网页布局模型。 学习这部分时,关键在于理解概念,而不需要将精力花在美化页面的许多技巧上,那是网站美工的工作,不是程序员的工作。
  第二步:学习JavaScript
  JavaScript不是Java,它主要运行于浏览器端。可以完成许多工作,功能也很强大:比如它将客户端网页中的HTML元素看成一棵树,可以编写代码访问并修改树节点,动态生成新的HTML代码,从而达到动态修改网页显示特性的目的。
  JavaScript在目前的网站开发中用得很多,非常重要。
  另外,它也是目前非常流行的AJAX技术的基础。
  第三步:学习计算机网络原理
  找一本大学<计算机网络>教材,重点看看它的有关互联网的部分,了解一些域名解析和HTTP协议等知识。这是进行互联网开发的理论基础。
  第四步:学习ASP.NET表示层技术,会设计Web页面
  需要结合先前打好的面向对象技术的基础,至少掌握以下内容:
  (1) 各种Web控件的使用方法,
  (2) 理解信息在网页中的传送方式,比如Cookie,ViewState,Session等的使用。
  (3) ASP.NET应用程序与网页的生命周期,以及相关对象(比如httpcontext,response,request)的用途。
  (4) ASP.NET实现事件驱动的内幕
  (5) 自定义用户控件
  再次强调一下,没有OO基础,很难掌握上述技术,就只能被这些东东牵着鼻子走了,会很被动。
  第五步 掌握数据库技术
  具体地说,要学习以下内容:
  (1) 学会使用SQL Server 2005:不要求精通它的各种工具与管理配置技术,但至少知道如何连接,如何建表,如何创建存储过程
  (2) 学习ADO.NET,掌握使用代码人工访问数据库(别用VS2005的向导)的方法
  (3) 学习数据绑定控件的使用
  第六步 理解多层架构
  这时,先前在OO学习阶段涉及到的程序集与应用程序域等就派上用场了,现在,网站架构大多采用多层架构:表示层、业务逻辑层、数据存取层以及数据库本身。
  可以先上网找一此多层架构的资料看,再找一个现成的比较复杂的开源ASP.NET项目分析一下其架构就差不多了。基本上都是一个套路,到处应用。
  有的朋友问:学习架构是不是必须学习设计模式。
   我的看法是:不必!当然,你如果学习过设计模式,那当然更好。但在实际开发中,如果只想着机械地套用某种模式,反而起不到好的结果。我的观点:在学习设 计模式时要多思多悟,其思想就会渐渐地融入你的大脑,在真实的设计实践中,忘掉所有的写在书上的模式,一切从实际出发,相信你的直觉,只要达到设计要求的 方案就是可行的方案,事实上,你这样做了之后,回过头来再看,会发现你的设计往往暗合设计模式的理论。
  第七步 学习XML与Web Service
  先了解XML的基础知识,找本讲XML的书看一下就差不多了,然后,再学习Web Service。Web Service其实可类比为远程方法调用(以XML格式表达的调用信息)。
  学 到了这里,如果你还有兴趣,不妨再去看看SOA,不过SOA的资料都是理论与概念,看起来比较郁闷,而且离实际开发可能比较远。所以,这是可选项。
  第八步 学习AJAX
  学习AJAX的主要目的是创建具有更丰富特性的Web表示层,而经过前面七步的学习,到此再学习AJAX已水到渠成,所有的基础都已具备,不会有太大的问题了。
  在基础未具备的前提下直接学AJAX,就象“浮沙之上筑高台”,所以,将AJAX的学习次序安排在这里。
  第九步 学习RIA技术
  RIA:Rich internet application,可看成是将C/S与B/S优点合二为一的尝试。就具体技术来说,主要指微软的Silverlight(WPF_E),毕竟前头一路行来都是微软路线。
  不过目前学习它主要是为了技术储备。估计此技术的普及需要2到3年的时间,因为预装Vista的机器今年才开始大卖。
本贴来自ZDNetChina中文社区 http://bbs.zdnet.com.cn ,本贴地址:http://bbs.zdnet.com.cn/viewthread.php?tid=108315

[四格]有趣的血型漫画

mikel阅读(1198)

据说中国人B型血最多,美国O型最多,日本A型最多。
关于血型的四格漫画 作者:Realcrazyman 翻译:Bunny 























开车的时候会…





[Flex]采用Flex开发的虚拟社区《都市人生》

mikel阅读(823)

http://gz.o.cn/index.jspa
《都市人生》是结合都市圈虚拟仿真地图的在线虚拟社区游戏,采用Flex开发。地址是http://gz.o.cn。进去加载完后点击左上角的“都市人生”按钮后就可以进入游戏了
《都市人生》和其他Flash虚拟社区在线游戏最大的不同点是《都市人生》是和现实的3D地图结合起来的,例如你可以在珠江新城购买一套房产,然后购买户型,再购买家具装修等等。
《都市人生》已经实现的功能有购买房产、购买户型、购买家具、购买服饰等等,然后可以DIY自己的虚拟形象。装修自己的房间。在场景内和其他玩家聊天、看视频等。还可以玩小游戏等。

[理论]5W2H分析法

mikel阅读(1077)

 5W2H分析法又叫七何分析法。简单、方便,易于理解、使用,富有启发意义,广泛用于企业管理和技术活动,对于决策和执行性的活动措施也非常有帮助,也有助于弥补考虑问题的疏漏。
  
  (1) WHY——为什么?为什么要这么做?理由何在?原因是什么?
  (2) WHAT——是什么?目的是什么?做什么工作?
  (3) Where——何处?在哪里做?从哪里入手?
  (4) WHEN——何时?什么时间完成?什么时机最适宜?
  (5) WHO——谁?由谁来承担?谁来完成?谁负责?
  (6) HOW——怎么做?如何提高效率?如何实施?方法怎样?
  (7) HOW MUCH——多少?做到什么程度?数量如何?质量水平如何?费用产出如何?
  
    1) WHY 为什么?为什么会有网站策划,为什么要做网站策划。这里先提一下产品策划(或产品经理),互联网本身有很多产品,比如:Live在线;Delicous;Flickr;Imop;inout;再近一些,比如蓝色的桌面城市,数码频道,Page。这些产品本身一开始被定义出来的时候并不是体现在网站上,而是在整体的规划和对市场的把控上。而策划人员在接到产品的时候,需要把产品经理的产品来表现到网站上,而最终达到盈利的目地。为什么有网站策划,实际上是策划产品在页面上的体现。
  
    2) WHAT 是什么?策划人员在拿到产品的方案时,首先要明白这个产品到底是什么。很多人可能会一拿到方案就开始做,这个应该是错误的。余世维举了个例子,拿出一张纸,对所有人说,把你们面前的纸给撕了。。话没说完,有人开始撕,横着、竖着,什么样的都有。这个时候又说话了:请把你们的纸从下往上,45度的撕成两半。这个例子简单,说明了人和人的理解会有不同,不同的人有不同的想法,至于方案就更不能这样。积极的沟通和交流,是策划人员和产品人员这个时候要做的重要一步。
  
    3) Where 从哪里着手? 沟通到了深入的一步的时候,应该把握产品的重点方向是什么,何时开始或准备盈利。(当然影响这些的因素有很多,比如渠道等。)了解这些东西,可以开始着手重点的表现层的东西,也就是说可以开始网站的流程上的思考了。这个时候大都是这么开始,从个人的经验上来看,人的因素占了很多,所以进行到Where的时候要了解具体哪个人负责哪件事,做好下一步的沟通准备。
  
    4) WHEN 何时?什么时间完成?什么时机最适宜? 我想针对于网站策划,什么时候完成似乎变得不重要了。什么时候是死线往往成了最重要的时间。我列出来一些网站策划要考虑的几个关健时间:何时开始、何时进行原型设计,何时进行讨论,何时完成设计稿,何时开始制作,何时开始开发,何时开始联调,何时进行测试,何时进行发布。
  
    5) WHO 谁? 其实这个部分从一开始就应该考虑到,涉及网站的相关有多少人,每个人都是什么类型。有的设计师比较有经验,不用讲太多就能明白你想要的效果;有的不喜欢产品,确能很按时的完成任务;有的产品经理不是太懂,确能对产品付起责任。每个人都是不同,针对不同的人要多沟通,多了解对方总有好处。看一下合作成功的两个公司的领导或相处很好的朋友,总能笑西西的一起吃饭喝酒。
  
    6) HOW 如何去做? 网站策划不是口头表达,总有一定的规律性和可操作的流程。写好一份完整的网站策划书实在不简单。我想谈的有几个关健点。一是简述产品的概念和要达到的目的,让相关人士进行初步了解;二、规定好时间段,特别是Deadline,把项目的执行力体现在时间段上;三、规划好网站的布局,从二级开始到一级;从流程到整体,让项目人员完全了解网站的概况及操作;四、描述产品定位给网站所要求的风格,这个时候可以给设计师一些参考的元素,设计师对理性的东西往往不是太重视,给他们感性的元素会很快的上手网站设计;五、网站的内容是什么,要确定下来,此时的定义对于网站上线后的测试和修改都相当重要,如果一个产品上线后还改来改去,用户不知道会烦到什么程度。
  
    7) HOW MUCH 在这里我想谈一下质量控制。有次工作中上线后出现了一个错别字,查到最后,原来是产品经理打错了一个字。追其过程,策划人员拿到文案,然后 Copy到策划书里,然后交于设计师,设计师再Copy,再交于制作人员,再交于开发,再交于测试,再交于上传。完了,整个过程没有一个人看到这个错别字。日本人在这里做的非常好,由西方提出来的质量管理他们延伸到全面质量管理”Total Quality Management”. 我并不在于夸日本人,而是全面质量管理确实有利于网站策划人员,用TQM的思想来把控网站的质量问题。如果是这样,那么测试人员是不是要下岗了?
  
    提出疑问于发现问题和解决问题是极其重要的。创造力高的人,都具有善于提问题的能力,众所周知,提出一个好的问题,就意味着问题解决了一半。提问题的技巧高,可以发挥人的想象力。相反,有些问题提出来,反而挫伤我们的想象力。发明者在设计新产品时,常常提出:为什么(Why);做什么(What);何人做(Who);何时(When);何地(Where);如何(How);多少(How much)。这就构成了5W2H法的总框架。如果提问题中常有“假如……”、“如果……”、“是否……”这样的虚构,就是一种设问,设问需要更高的想象力。

[UI]用户期望的满足、超越和拒绝

mikel阅读(678)

对于需求和期望,我是这么理解:用户期望是需求的表现层,期望是用户对需求满足方式的一种假设。
举一个例子:
朋友给张三推荐一首《海阔天空》,张三于通过搜索引擎到达某个网站,他的期望是:找到下载的链接>下载>离开网站
满足期望
网站如果提供下载,应该尽可能地帮助张三在最短的时间内完成这个任务。张三在完成这个下载之后,下载下来的歌曲质量恰好是他想要的,下载速度也很满意。张三的期望得到满足,网站能获得的:
1 如果张三下次还有想听的歌,很可能不通过搜索引擎直接访问到网站,网站就有机会将其转化成长久用户。
2 张三可能会介绍他的朋友来这个网站。
超越期望
张三是期望到该网站能下载《海阔天空》,但他的真正需求是这样吗?或许不是,他也许只是想听一下这首歌,只不过他认为他应该下载下来满足他听的需求。
如果该网站告诉张三,我们这不但可以下载,还可以在这里在线听,而且速度不卡。张三很满意,算了,我就不下载了。
再进一步,网站又告诉张三,beyond的歌还有《大地》、《光辉岁月》…,现在流行的歌有《青花瓷》、《老人与海》…张三感觉发现了新大陆,于是把该网站存进收藏夹,并且经常来这听歌。
……
尽管网站可以下载《海阔天空》,但我们发现,网站并没有满足张三的期望,但是解决了他的需求,因为网站给张三的解决方案要优于他的假设。
拒绝期望
如果该网站是一个音乐社区,主要提供音乐信息的交流和分享,提供试听但不允许下载。网站应该让张三在最短的时间内知道:这里不能下载,但可以…
如果张三的需求底线就是下载到本地,那OK,张三暂时就不是你的目标用户,礼貌地将其送出门。
很多网站都想方设法要把用户留住,不惜代价“迷惑”、“欺骗”用户,填写更多的资料,做更多地点击,到最后用户一边骂娘一边离开,现实中处处见到这样的“流氓拉客”方式。
好的设计应该懂得拒绝!
期望的变化
起初大家上网找音乐都是为了下载,但随着网速的加快,版权问题等因素,当第一个在线听歌的网站出来以后,慢慢地很多网站都提供在线听,人们以后再到音乐网站,期望也会发生改变。
当在线试听成为一个普遍的、基本的需求之后,如果有一个网站可以将在线听歌同步到手机、MP3等等各种终端,那又超越了用户的期望。
转载请注明出自UCDChina.com,谢谢。