---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
ASP.NET是一种动态网页生成技术,是在服务器端运行.net的代码,动态生成HTML,然后相应给浏览器。
一般处理程序的长连接:服务器不会在发送完数据后直接关闭连接通道,而是等一段时间,在这段时间之内,如果相同浏览器再次发送请求,那么服务器利用此通道继续向浏览器送数据,发送完数据后,在等和上面相同的时间后,如果没有请求即关闭连接通道。
获取传递过来的数据:
Request包括QueryString(通过get传数据两种情况:超链接、表单Method=get、Form(post方式传数据,表单method=post)
ASP.NET常用文件:
扩展名 说明
.ashx 一般处理程序(简单),ASP.NET核心程序,
但一般使用.aspx
.aspx 常用程序Webform,用于创建网页核对网页进行编辑
的核心文件(前台文件),和aspx.cs配合使用
.aspx.cs 用于编写大量C#业务代码(后台使用)
.ascx 用于指明一个ASP.NET用户定义控件
.asax 包含ASP.NET应用程序级事件的事件语法
.config 配置文件,用于设置网站应用程序的各种属性
.asmx 供宿主Web服务在本地或远程使用
aspx 最简单最高效,一般不需要返回大量HTML代码是可以使用。;
aspx+aspx.cs是webform
获得系统当前时间,并在浏览器显示
public viod ProcessRequest(HttpContext context){
context.Response.ContentType=”text/plain”;//设置服务器向浏览器输出的响应报文的ContentType属性,浏览器根据不同的属性对响应报文进行处理【响应包问题】
DateTime serverTime=DateTime.Now; //获得系统时间
context.Response.Write(“Hello,Word!”+serveTime.ToString);
}
一般处理程序(HttpHandler):是一个实现了System.Web.IHttpHandler特殊接口的类。
凡是实现IHttpHandler接口的类都能够作为一个外部请求的目标程序(凡是没有实现此接口的类都不能够被外部请求)。
ASP.NET六大对象(通过ProcessRequest方法的参数HttpContext context调用)
1> Request 读取客户端在Web请求期间发送的值(http请求报文的数据)
2> Response 封装了页面执行期返回到HTTP客户端的输出(http响应报文的数据)
3> Application 作用于整个程序运行期的状态对象
4> Session 会话期状态保持对象,用于跟踪单一用户的对话。
5> Cookie 客户端保持对话信息的一种方式
6> Server 提供对服务器上的方法和属性的访问
此外还有一个对象Page 他是指向叶面自身的方式。作用域为页面执行期。
登陆界面程序练习
public void ProcessRequest(HttpContext context){
context.Response.ContentType=”text/html”;//设置响应报文类型
//准备要输出浏览器的HTML代码
System.Text.StringBuilder sbHTML=new System.Text.StringBuilder();
SbHTML.Append(“<html><head><title>登陆页面</title></head><body><form action=’01.ashx’ method=’get’>”);//当浏览器向服务器发送请求报文的目的是想浏览 器取东西是,用get方法,如果不是取东西二是想浏览器发东西时用post方法。
sbHTML.Append(“用户名:<input type=’text’ name=’txtName’ /><br/>密码:<input type=’password’ name=’txtpwd’/><br/>”);
sbHTML.Append(“<input type=’submit’ value=’登陆’/>”);
sbHTML.Append(“</form></body><html>”);
//输出HTML至浏览器
Context.Response.Write(sbHTML.ToString());
/------------------------获得浏览器传值----------------------------/
//post方式获得传值
string strUserName=context.Request.Form[“txtName”];
if(!string.IsNullOrEmpty(strUserName)){
context.Reponse.Write(“Form表单中的值:”+strUserName);
}
//get或超级链接获得传值
String strUserName2=context.Repuest.QueryString[“txtNama”];
If(!string.IsNullOrEmpty(strUserName2)){
Context.Repuest.Write(“URL中的值”+strUserName);
}
}
// context.Request.Form 、context.Repuest.QueryString这两句话去掉最后一个Form和QuearString只剩下context.Reqest可以都取到get和post方法中提交的值,因为context.Reqest包函ontext.Request.Form和context.Repuest.QueryString
ontext.Request.Form只取到post方法的值
context.Request.QueryString只能够取得get方法提供的值。
加法计算器,有隐藏域的执行运算否则不执行运算,程序如下:
public class JSQ:IHttpHandler{
public void ProcessRequest(HttpContext context)
{
//取得文本框text1和text2的值
string strNum1=context.Request.Form[“txtNum1”];
string strNum2=context.Request.Form[“txtNum2”];
int x=0;
int y=0;
int z=0;
//如果有隐藏域执行计算否则不执行
If( !string.IsNullOrEmpty(context.Request.Form[Hid]))
{
if (!string.IsNullOrEmpty(strNum1)&&!string.IsNullOrEmpty(strNum2))
{
//字符串转换为数组
if(int.TryParse(strNum1,out x)&&int.TryParse(strNum2,out y))
{
z=x+y;
}
}
}
System.Text.StringBuilder sbHTML=new System.Text.StringBuilder();
SbHTML.Append(“<html><head><title>计算器</title></head><body><form action=’’method=’post’>”);
sbHTML.Append(“<input type=’text’ name=’txtNum1’ value=”’+x.ToString()+”’/>+<input type=’text’ name=’txtNum2’ value=’’’+y.ToString()+’’’/>=<input type=’text’ name=’txtSum’ value=’’’+z.ToString()+’’’/><br/>”);
sbHTML.Append(“<input type=’submit value=’计算’/>”);
sbHTML.Append(“<input type=’hidden’ name=’Hid’ value=’1’ /></Form></body></html> ”);
}
public bool IsReusable{
get{
return false;
}
}
}
点击计算按钮时,将text中的数字提交给服务器,服务器运算后将结果返回给浏览器,并显示在文本框中。只有Form表单内的才会被提交到服务器。如果设置了控件的disable或readonly属性,他的内容也不会被提交。
在这里面写空间的代码,显得繁琐。你可以新建一个HTML页面,建立一个链接即可。上面程序可以这样做。这种方法一目了然,便于阅读的差错。程序如下
1>新建HTML页面,名称为JS.html代码如下:
<head>
<title>计算器</title>
</head>
<body>
<form action=’’ method=’post’>
<input type=”text” name=”txtNum1” value=”{num1}”/>+
<input type=”text” name=”txtNum2” value=”{num2}”/>=
<input type=”text” name=”txtsum” value=”{res}”/>
<br/>
<input type=”sunmit” value=”计算”/>
<input type=”hidden” name=”hid” value=”1”/>
</form>
</body>
2>新建aspx页面,代码如下
public void ProcessRequest(HttpContext context)
{
context.Responce.ContentType=”text/html”;
/-----------------------读取html模板内容---------------------------/
//根据虚拟路径过的物理地址
string path=context.Server.MapPath(“JS.html”);
string strHTML=System.Io.File.ReadAllText(path);
//获得浏览器取得的数据并运算
string strNum1=context.Request.Form[“txtNum1”];
string strNum2=context.Request.Form[“txtNum2”];
int x=0;
int y=0;
int z=0;
//如果有隐藏域执行计算否则不执行
If( !string.IsNullOrEmpty(context.Request.Form[Hid]))
{
//strNum1和strNum2的值如果不为空,就将它们的值进行转换
if (!string.IsNullOrEmpty(strNum1)&&!string.IsNullOrEmpty(strNum2))
{
//字符串转换为数组
if(int.TryParse(strNum1,out x)&&int.TryParse(strNum2,out y))
{
z=x+y;
}
}
}
//加数以及求得的和替换到要返回到浏览器的html代码字符串的占位符去
StrHTML=strHTML.Replace(“{num1}”,x.ToString()).Replace(“{num2}”,y.ToString()).Replace(“{res}”,z.ToString());
//输出,被替换过的html代码字符串
Context.Response.Write(strHTML);
}
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------