浏览器与服务器的交互
请求--->处理--->响应
对类HttpContext 内部成员的使用 例如 :Request 、Response 、 Cookie 、 Session 、GetSection . . .
/////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* * * 然而 一般处理程序 既为 中间阶段的 处理 层面
1 public void ProcessRequest(HttpContext context) 2 3 { 4 5 context.Response.ContentType = "text/plain"; 6 7 context.Response.Write("<a href='http://www.rupeng.com'>如鹏网</a>"); 8 9 }
* * * 上面的代码就是对于请求的内容做出处理。
/////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ContentType: http://baike.baidu.com/view/1547292.htm?wtp=tt#5
//***主要拿来生成动态图片和动态文本,比传统aspx文件效率高,因为它不包含控件解析和页面处理的过程..楼上说用于ajax,其实就是用它来产生动态文本,
你也可以拿来做验证码图片等..不过它的作用应该不止于此吧,我看了下资料说它完全可以自定义Http请求,这些当然是属于比较高深的内容了
/////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HttpContext.Request :
http://msdn.microsoft.com/zh-cn/library/system.web.httprequest(v=vs.110).aspx
添加 //string action=context.Request["name"];
//int age = Convert.ToInt32(context.Request["age"]);
//string action=context.Request["name"]
//context.Response.Write("<font color='red'>Hello " + action + "</font>");
//context.Response.Write("<font color='green'>我今年"+age+"岁</font>");
之后 在地址栏里 传递 参数 . . . .
Request :请求 //从地址栏获得
Response :响应 //返回给页面
<form action="TestHandler.ashx" method="get"> |
|
|
姓名:<input type="text" name="name" /><br /> |
|
年龄:<input type="text" name="age" /><br /> |
|
<input type="submit" /> |
</from> |
|
将表单里的东西发送到地址栏,地址栏向服务器请求,然后服务器响应传回所请求的东西到地址栏,然后页面获取地址栏里相应的值。
// 将表单里的内容提交(action)给服务器端(url)的程序(TestHandler.ashx)
name里的值是指定具体对应的值(传参用的)
上面的 //string action=context.Request["name"];
//int age = Convert.ToInt32(context.Request["age"]);
请求的参数就是 name 标签里的具体值。
/////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
封装模版引擎NVelocity.dll
使用到了匿名函数
//把类的定义和对象的声明初始化放到一起
//匿名类
var news = new { Title = "特大喜讯",Author="杨中科",PostDate="2013-11-08",Msg="今天晚上会公布喜讯细节!" };
string s = news.PostDate;
1 public class CommonHelper 2 { 3 public static string RenderHtml(string name, object data) 4 { 5 VelocityEngine vltEngine = new VelocityEngine(); 6 vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file"); 7 vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹 8 vltEngine.Init(); 9 10 VelocityContext vltContext = new VelocityContext(); 11 vltContext.Put("Model", data);//设置参数,在模板中可以通过$data来引用 12 13 Template vltTemplate = vltEngine.GetTemplate(name); 14 System.IO.StringWriter vltWriter = new System.IO.StringWriter(); 15 vltTemplate.Merge(vltContext, vltWriter); 16 return vltWriter.GetStringBuilder().ToString(); 17 } 18 }
结合一般处理程序 使用情况
http 无状态保持(05-状态的传递和保持)
怎么记住提交的值呢 ?
利用隐藏字段来实现 【相当于看病的病历本】
Html中:
Ashx中:
缺点 : 无法自由的存取数据 。