Asp_CRUD
Asp_增删改查。逻辑流程
启动服务器。 地址为127.0.0.1 端口为随机分配 2607
然后在浏览器中输入http://localhost:2670/CRUD_main.ashx
浏览器像服务器发送这样一组信息
浏览器请求的头文件
GET /CRUD_main.ashx HTTP/1.1
Host: localhost:2670
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
服务器获取到请求 CRUD_main.ashx
服务器端开始执行这段代码。 CRUD_main.ashx.cs
public class CRUD_main : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
DataTable td= SqlHelper.ExcteQuery("select * from T_persons");//
StringBuilder sb = new StringBuilder();
foreach(DataRow rows in td.Rows)
{
sb.Append("<tr><td>").Append(rows["UserName"]).Append("</td><td>").Append(rows["password"]).Append("</td><td>").Append(rows["Age"]).Append("</td><td>").Append("<a href = 'CRUD_delete.ashx?id= ").Append(rows["id"]).Append("'>删除").Append("</td><td>").Append("<a href ='CRUD_addNew.ashx?action=edit&id=").Append(rows["id"]).Append("'>编辑");
sb.Append("</td></tr>"); }
string CRUD_main =Httphelper.virtualPath("~/CRUD_main.html");
string CRUD_main_ = CRUD_main.Replace("@table",sb.ToString()).Replace("@title","主页面").Replace("@SET","T_persons");
context.Response.Write(CRUD_main_);//替换后的结果
}
经过服务器的解析返回给浏览器的头解析的信息。
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcQ19zaGFycF9DbGFzc1xXZWJfQXNwXGFzcF/lop7liKDmlLnmn6VcQ1JVRF9tYWluLmFzaHg=?=
X-Powered-By: ASP.NET
Date: Sun, 08 May 2016 15:44:36 GMT
Content-Length: 702
context.Response.Write(CRUD_main_);// 服务器返回给浏览器的这段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>
<style type="text/css">
.table
{
width:300px;
}
.table tr td
{
border-top:#FF0000 solid 4px;
width:20%;
background-color:ghostwhite;
text-align:center;
line-height:24px;
}
</style>
</head>
<body>
<h1>. . T_persons</h1> <a href ="CRUD_addNew.ashx?action=add">添加</a>
<table class="table">
<br/>
<tbody><th>姓名</th><th>密码</th><th>年龄</th><tr><td>welzek</td><td>loves</td><td>88</td><td><a href = 'CRUD_delete.ashx?id= 15'>删除</td><td><a href ='CRUD_addNew.ashx?action=edit&id=15'>编辑</td></tr><tr><td>welzek</td><td>loves</td><td>88</td><td><a href = 'CRUD_delete.ashx?id= 16'>删除</td><td><a href ='CRUD_addNew.ashx?action=edit&id=16'>编辑</td></tr><tr><td>welzek</td><td>loves</td><td>88</td><td><a href = 'CRUD_delete.ashx?id= 17'>删除</td><td><a href ='CRUD_addNew.ashx?action=edit&id=17'>编辑</td></tr></tbody> </table>
</body>
</html>
浏览器自己解析得到下面内容展示

<a href = 'CRUD_delete.ashx?id= @Id'>删除
点击删除按钮,由HTML 代码可以看出 , 删除按钮这个超链接跳转到了CRUD_delete.ashx 这个文件中。后面的id 是遍历得到。
浏览器在一次像服务器IIS 请求。CRUD_delete.ashx?id=@id.
服务器在拿到这个请求后。开始执行CRUD_delete.ashx.cs这段代码。
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
int id = Convert.ToInt32( context.Request["id"]);
SqlHelper.ExcuteNonQuery("delete from T_persons where id =@id",new SqlParameter("@id",id));
context.Response.Redirect("CRUD_main.ashx");
}
从代码看出这个是对数据库进行删除操作的。 删除完之后会重新定向会CRUD_main.ashx。进行一次新的查询。
由浏览器的F12 追踪一下可以看到。

当点击添加的时候,根据HTML代码可以看出是跳转到了
CRUD_addNew.ashx?action=add
并且给传了一个值。action=add/, 服务器拿到这个request(请求) 开始执行以下代码。
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
// CRUD_addNew.ashx?action=add
// CRUD_addNew.ashx?action =edit&id=1
string addNewHtml = Httphelper.virtualPath("~/CRUD_addNew.html");
string action = context.Request["action"];
if (action == "add")
{
addNewHtml = addNewHtml.Replace("@title","新增").Replace("@action",action).Replace("@name", "").Replace("@password", "").Replace("@Age","");
context.Response.Write(addNewHtml);
}
else
{
Httphelper.OutPutErr("Action错误");
}
}
服务器根据判断,返回了一个添加页面的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="CURD_Save.ashx" method="get"> | |
| <input type="hidden" name ="id" value="@id" /> | |
| <input type="hidden" name="action" value="add" /> | |
| 姓名<input type="text" name="name" value=""/> | |
| 密码<input type="text" name="password" value=""/> | |
| 年龄<input type="text" name="Age" value=""/> | |
| <input type="submit" value="提交" /> | |
| </form> | |
| </body> | |
| </html> | |
浏览器解析后得到。下面这个页面。

为了方便查看,post 改为get

由form 表单看出 把这些数据提交到了 CURD_Save.ashx这个页面中。CRUD_Save.ashx 代码如下 为看清楚,删除了判断数据合法性的代码。
public class CURD_Save : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
// 判断提交过来的是新增还是修改
string action =context.Request["action"];
string name = context.Request["name"];
string Password = context.Request["password"];
string strAge = context.Request["Age"]; int Age = Convert.ToInt32(strAge); if (action == "add")
{ SqlHelper.ExcuteNonQuery("INSERT INTO T_persons (UserName,password,age)values(@name,@password,@age)",
new SqlParameter("@age", Age), new SqlParameter("@name", name), new SqlParameter("@password", Password));
HttpContext.Current.Response.Redirect("CRUD_main.ashx"); }
else if (action == "edit") // 编辑
{ int id = Convert.ToInt32(context.Request["id"]);
SqlHelper.ExcuteNonQuery(" UPDATE T_Persons Set Age=@age,UserName=@name ,password=@password where id =@id",
new SqlParameter("@age", Age),new SqlParameter("@name",name),new SqlParameter("@password",Password),new SqlParameter("@id",id));
HttpContext.Current.Response.Redirect("CRUD_main.ashx"); }
else
{
Httphelper.OutPutErr("Action错误");
} }
根据action传过来的值,判断是添加还是修改。 执行对应的SQL语句。 然后重新定向回主页面
Asp_CRUD的更多相关文章
随机推荐
- VC 各种情况下的窗口句柄的获取
动窗口的句柄.否则,返回值为NULL. GetSafeHwnd 函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数. 通过下面的 ...
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
转载 http://blog.csdn.net/cutesource/article/details/6192163 最后我们再看看NIO方面最著名的框架Mina,抛开Mina有关session和处理 ...
- CodeForces 732C Sanatorium (if-else)
题意:某人去旅游,记录了一共吃了多少顿饭,早中晚,但是有可能缺少,问你最少缺少了多少顿. 析:每把三个数排序,然后再一一对比,肯定是以最大数为主,其他两个肯定是缺少了. 代码如下: #pragma c ...
- Django搭建博客后台
转载自:http://sanwen8.cn/p/1cboypN.html 首先创建项目和blog应用: 在cmd命令行下,输入: django-admin.py startproject myblog ...
- SSH登录失败:Host key verification failed
转载自:https://help.aliyun.com/knowledge_detail/41471.html 注意:本文相关 Linux 配置及说明已在 CentOS 6.5 64 位操作系统中进行 ...
- Python3学习
要做一个儿童搜索引擎的项目(www.kidsearch.cn),所以开始接触各种新的语言,初步学了PHP爬虫,觉得要做大点的项目用PHP确实不太方便,中文兼容性就是一个比较棘手的问题.python的爬 ...
- ASP.NET MVC 3 入门级常用设置、技巧和报错
1.ASP.NET MVC 3 如何去除默认验证 这个默认验证是在web.config配置文件中设置的 <add key="ClientValidationEnabled&quo ...
- Codeforces Gym 100523E E - Gophers SET
E - GophersTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- pjsip视频通信开发(上层应用)之拨号键盘下部份拨号和删除功能
我们开发的是视频电话,所以既可以视频通话,可以只有音频的通话,所以底部含有两个按钮,最后一个就是删除功能,如果输入错误,我们可以删除输入的内容. 这里我们要通过重写LinearLayout来实现这部份 ...
- 详解Android Handler的使用-别说你不懂handler
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...