黑马程序员-ASP.NET(1)学习总结

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

ASP.NET是一种动态网页生成技术,是在服务器端运行.net的代码,动态生成HTML,然后相应给浏览器。

一般处理程序的长连接:服务器不会在发送完数据后直接关闭连接通道,而是等一段时间,在这段时间之内,如果相同浏览器再次发送请求,那么服务器利用此通道继续向浏览器送数据,发送完数据后,在等和上面相同的时间后,如果没有请求即关闭连接通道。

获取传递过来的数据:

Request包括QueryString(通过get传数据两种情况:超链接、表单Method=getForm(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.cswebform

获得系统当前时间,并在浏览器显示

  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这两句话去掉最后一个FormQuearString只剩下context.Reqest可以都取到getpost方法中提交的值,因为context.Reqest包函ontext.Request.Formcontext.Repuest.QueryString

ontext.Request.Form只取到post方法的值

context.Request.QueryString只能够取得get方法提供的值。

 

 

 

加法计算器,有隐藏域的执行运算否则不执行运算,程序如下:

public class  JSQ:IHttpHandler{

 public void ProcessRequest(HttpContext context)

{

  //取得文本框text1text2的值

  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表单内的才会被提交到服务器。如果设置了控件的disablereadonly属性,他的内容也不会被提交。

在这里面写空间的代码,显得繁琐。你可以新建一个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]))

{

//strNum1strNum2的值如果不为空,就将它们的值进行转换

 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培训、期待与您交流! ----------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值