过程:

客户端像服务器发送一个请求,iis服务器接收到请求的数据,并且将数据交给c#程序进行处理,并且对数据库进行操作,并且将处理到的结果响应给浏览器客户端

过程2:
第一次浏览器请求,后端应该发一个表单给浏览器,然后再把表单的信息提交回服务器。其中要经过两次,一次请求,一次响应

2.本质:

本质上asp.net 是部署在iis服务器上的,所以一般性处理文件的核心是创建一个有权限处理对浏览器请求的一个类

3.网址解释:http:128.123.11.12:123 //前面的是服务器的id 后面是区分服务器中端口的实质
//注意:在打开http://localhost:6447/Handler1.ashx 需要设置到节点的文件上才能显示

4.另外,在测试登录信息是否正确的时候,可以在/后面加上?并且输入验证信息之后用& 来分隔信息

例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication5
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context) //请求报文
{
context.Response.ContentType = "text/plain"; //请求类型

string username=context.Request["username"]; //登录账号
if (username == "111")
{
context.Response.Write("Hello World"); //逻辑判断 并且响应
}
else
{

context.Response.Write("登录失败");

}
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

//注意:
1 在""中 最好写‘’防止混乱
2 context.Response.ContentType = "text/html"; //请求类型 //关于请求类型
3 500是服务端报错 404是前端报错(地址输入的问题)没有这个资源 200是成功

例2:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication5
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context) //请求报文
{
context.Response.ContentType = "text/html"; //请求类型
string username=context.Request["username"];
string password = context.Request["password"];
if (string.IsNullOrEmpty(username))
{
context.Response.Write("<form action='Handler1.ashx' method='post'<p>输入账号:<input type='text' name='username'/><p>输入密码:<input type='password'name='password'/><p><input type='submit' vlues='登录'</input></p></p></p></form>");
}
else
{

context.Response.Write("响应失败");

}
}

public bool IsReusable
{
get
{
return false;
}
}
}

例3:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication5
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context) //请求报文
{
context.Response.ContentType = "text/html"; //请求类型

string username = context.Request["username"]; //请求对象获取属性

if (string.IsNullOrEmpty(username))
{

context.Response.Write("<form action='Handler1.ashx' method='post'<p>输入账号:<input type='text' name='username'/><p>输入密码:<input type='password'name='password'/><p><input type='submit' vlues='登录'</input></p></p></p></form>"); //响应

}
else {

if (username == "zhangsan")
{

context.Response.Write("有这个账号");

}
else
{

context.Response.Write("<form action='Handler1.ashx' method='post'<p>输入账号:<input type='text' name='username'/><p>输入密码:<input type='password'name='password'/><p><input type='submit' vlues='登录'</input></p></p></p><p style='color:red'>没有这个账号</p></form>");

}

}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}

例4:利用io来读取html文件 实现样式分离 //反射是取程序集中的对象 而流是用来读取磁盘上的文件

//html部分

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form action='Handler1.ashx' method='post'>
<p>输入账号:<input type='text' name='username'/></p>
<p>输入密码:<input type='password'name='password'/></p>
<p><input type="submit" value="提交" /></p>
</form>

</body>
</html>

//ashx 部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;

namespace WebApplication5
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context) //请求报文
{
context.Response.ContentType = "text/html"; //请求类型

string username = File.ReadAllText(@"D:\WebApplication5\WebApplication5\logo.html");

if (string.IsNullOrEmpty(username))
{

context.Response.Write(username);

}

注意:可以用对asp分离的样式进行设计

前端页面 logo.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form action='Handler1.ashx' method='post'>
<p>输入账号:<input type='text' name='username'/></p>
<p>输入密码:<input type='password'name='password'/></p>
<p><input type="submit" value="提交" /></p>
{hahahah}
</form>

</body>
</html>

后端处理 asp.net
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
namespace WebApplication5
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context) //请求报文
{
context.Response.ContentType = "text/html"; //请求类型

string username = context.Request["username"];
string html =File.ReadAllText(@"C:\WebApplication5\WebApplication5\logo.html");

if (string.IsNullOrEmpty(username))
{

context.Response.Write(html);

}
else {

if (username == "lisi")
{

context.Response.Write("有这个账号");

}
else
{

context.Response.Write("<form action='Handler1.ashx' method='post'<p>输入账号:<input type='text' name='username'/><p>输入密码:<input type='password'name='password'/><p><input type='submit' vlues='登录'</input></p></p></p><p style='color:red'>没有获取到html地址</p></form>");

}

}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}

4.在html页中使用特殊的字符然后在一般处理程序中替换html.Replace("字符","替换的内容")
例:
logo页面{eggrig}
一般处理程序页面
html = html.Replace("{eggrig}", "欢迎您使用本页面");

5.隐藏字段 通过在表单中设置一个隐藏字段 而判断隐藏字段是否为真,来确定非空验证

logo 页面

<input type="hidden" name="ispostback" value="true" />

后端页面

string ispostback = context.Request["ispostback"];
string html =File.ReadAllText(@"C:\WebApplication5\WebApplication5\logo.html");

if (string.IsNullOrEmpty(ispostback))
{

html = html.Replace("{eggrig}", "欢迎您使用本页面");
context.Response.Write(html);

}

引入数据库并且创建一个新的页面

步骤:

利用对数据拼接的技术进行

1.首先创建一个一般处理程序 写入查询的代码
2.再创建一个html前端的模板 并且将模板引入到一般处理程序之中
3.注意:context.Server.MapPath 可以将物理地址装换成相对地址
4.注意:后端不知道查出来是多少行的情况下可以用字符替换

//html 模板

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<table>

<tr>

<td>userID</td>
<td>username</td>
<td>password</td>

</tr>
<tr>

{conmetigjh}

</tr>

</table>

</body>
</html>

//一般处理程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace WebApplication5
{
/// <summary>
/// showstudents 的摘要说明
/// </summary>
public class showstudents : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
SqlConnection conn = new SqlConnection("server=.;database=SchoolIDB;uid=sa;pwd=123");
conn.Open();
string sql = "select * from users";
SqlCommand dx = new SqlCommand(sql, conn);
SqlDataAdapter cmd = new SqlDataAdapter(dx);
DataSet set = new DataSet();
cmd.Fill(set);
string html = File.ReadAllText(context.Server.MapPath("/showcunte.html"));
context.Response.Write(html);
DataRowCollection row = set.Tables[0].Rows;
for (int i = 0; i < row.Count; i++)
{

string y= row[i][0].ToString();
context.Response.Write(y);

}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}

// string str = "";

DataRowCollection row = set.Tables[0].Rows;
for (int i = 0; i < row.Count; i++)
{

str = "<tr><td>" + row[i][0].ToString()+"</tr></td>"; //后端替换

}
string html = File.ReadAllText(context.Server.MapPath("/showcunte.html"));
html=html.Replace("{emmmadd}", str);
context.Response.Write(html);

}

//后端退换

asp.net 基礎部分一的更多相关文章

  1. GO語言基礎教程:序章

    首先自我介紹一下我自己,我是一個coder,目前主要從事B/S程序開發工作,懂點PHP;ASP;JSP;JS;VB;C;DELPHI;JAVA,另外知道幾個數據庫,除此之外別無所長,那麼我為何會選擇學 ...

  2. Python 基礎 - for流程判斷

    今天介紹另一個循環判斷式 for循環,首先,先寫一個很簡單的 for循環的代碼 #!/usr/bin/env python3 # -*- coding:utf-8 -*- for i in range ...

  3. Python 基礎 - if else流程判斷

    hmm~前面講了那麼多,終於可以稍稍的正式進入另一個階段,沒錯,要開始寫判斷式了 這次先從最簡單的判斷式開始,if else 開始- Go 首先,之前有寫有一個簡單的互動式 用戶輸入 的代碼,忘記了嗎 ...

  4. JavaScript基礎知識

    JavaScript基礎知識 1.標籤組使用 <script charset='utf-8' //設置字元集 defet //使腳本延遲到文檔解析完成,Browser已忽略 language=' ...

  5. BootStrap基礎知識

    BootStrap基礎知識 1. .lead //突出 .text-left //文字居左 .text-right //文字居右 .text-center //文字居中 .text-justify / ...

  6. CSS1-3基礎知識

    CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...

  7. jQuery基礎知識

    jQuery基礎知識 $(function(){}) //jQuery先執行一遍再執行其他函數 $(document).ready(fn) //文檔加載完後觸發 1. 刪除$:jQuery.noCon ...

  8. 邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功

    修練過中國武術的人都知道,任何一種拳法的學習最重要的就是基礎功,而基礎功又可分為內在與外在的修練,內在的修練強調在平心.靜氣.不爭的調息.至於外在這首重在站樁.鬆沉.不疾不徐的應對能力.有了深厚基礎的 ...

  9. Python 基礎 - 淺copy補充說明

    在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...

随机推荐

  1. css3 动画的有关属性

    transform transform: none|transform-functions; transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. ...

  2. js的类型及调试下的辨识

    <script> var s1 = '11'; var s2 = 11; var s3 = true; console.log("我的类型是"+typeof(s1)+& ...

  3. Mac eclipse配置Python环境

    1.给Eclipse安装PyDev插件 第一次启动会让选择一个工作空间,按缺省设置,勾选一下不再提醒,就可以了.在Help菜单中,选择Install New Software···, 选择Add按钮, ...

  4. [转]DDD领域驱动设计基本理论知识总结

    领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...

  5. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  6. Go语言 获取get、post参数

    在贴代码之前如果能先理解一下golang http.request的三个属性Form.PostForm.MultipartForm应该能较好的理解代码,下面摘录一下. 以上简要翻译一下: Form:存 ...

  7. ssh 使用

    svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解 注意:本篇以后设涉及到的@后面 ...

  8. ip二进制计算,与运算算网段

    每8位二进制,各位从左到右对应的权值分别是 128,64,32,16, 8,4,2,1 .(即2的n-1次方,n是从右到左当前位的位数)  所以随便拿一个256以内的数给你化为二进制,都可以分解为权值 ...

  9. 识别网络应用所使用的协议Amap

    识别网络应用所使用的协议Amap   Amap是Kali Linux自带的一款信息收集工具.工作时,它首先向服务器的端口发送内置的触发包(tirgger),然后获取响应.通过分析响应包数据,来识别该端 ...

  10. BZOJ 4066 简单题 ——KD-Tree套替罪羊树

    [题目分析] 直接x,y二维轮番划分,暴力即可. 套上替罪羊,打碎重构,对于时间复杂度有了保证. 写起来好麻烦,重构的技巧很棒! [代码] #include <cstdio> #inclu ...