web程序入门一(一般处理程序 ashx+HTML)
创建web程序: 通过一般处理程序 创建web应用
这种方法比较麻烦 不拖控件
1.先建一个 一般处理程序 *.ashx
2.再建一个HTML 模板
在HTML中设置占位符 如 <p>$username</p> <p>$passwd</p>
在ashx文件中读取HTML文件:
string filepath = context.Request.MapPath("*.html") 获取该文件的物理路径
string strhtml = File.ReadAllText(filepath) 读取文件
strhtml = strhtml.Replace("$username","张三").Replace("$passwd","123456") 多个占位
符可以接着写 替换占位符
context.Response.Write(strhtml); 返回页面
该方法常用方法:
关于post和get请求的:
接收post请求提交过来的数据
string userName = context.Request.Form["txtName"] ; txtName是文本框的name属性值
如果表单是以post方式提交过来的,接收时必须用Request.Form来接收,表单元素必须有name
属性,而Form指定的键的名称就是name的属性值。
对于发送post/get请求的form表单网页,会自动向一般处理程序发送请求
当后端只是需要获得请求的数据,且不需要返回给前端时,不需要读取前端页面
有占位符时,需要读取文件,再替换
后端数据需要返回给前端时,需要读取前端页面文件
接收get请求发送过来的数据
string userName = context.Request.QueryString["txtName"];
如果是get请求接收用Request.QueryString,
表单元素必须有name属性,指定的键的名称就是name的属性值。
对安全性要求不高的表单用get请求,安全性要求高的用post请求
使用get请求时分享地址可以看到对方的搜索结果:有利于推广
注册登录都用post post请求发送的数据比get请求大 如上传文件
表单提交,在HTML文件中,form标签的action属性,指明要提交数据到那个一般处理程序
后端返回到前端的文件类型:
context.Response.ContentType = "text/plain";
context.Response.ContentType = "text/html";
跳转重定向:
context.Response.Redirect("\test.ashx")
context.Response.Redirect("\test.html")
接收文件 文件上传
<input type="file" enctype="" value ="fileup">
HttpPostedFile file = context.Request.Files["fileup"]; 接收文件数据
file.FileName 获得完全文件名
文件下载:
对于压缩包:
<a href ="/aa.rar">下载</a> 直接这样,点击就可以下载 一般不这么用
对于普通文件下载:
<a href ="/download.aspx">下载</a>
创建一个一般处理程序 download.aspx
string encodeFileName = HttpUtility.UrlEncode("aaa.txt"); //要下载的文件名
HttpUtility.UrlEncode的作用是中文文件名时,防止乱码,
context.Response.AddHeader("Content-Disposion", string .Format("attachment; filename = \{0}\" , encodeFileName));
//在响应头加上Content-Disposition, attachment 表示以附件的形式下载
context.Response.WriteFile("aaa.txt") //输出文件内容
http协议无状态:
可以通过如下方式记录数据
1.隐藏域:
<input type ="hidden" name="add" value = “$id”>
放一个值在隐藏域中,提交form表单时,该隐藏域中的值也会被提交
提交表单时,可以把用户看不见的数据,但是需要提交到服务端的数据通过隐藏域传递
修改<div>标签中的值
提交只能提交表单中的数据,不能提交div中的内容
不同方式创建网站的区别:
通过 新建--网站
创建web网站没有命名空间;
当需要调用类时,把需要引用的类文件,放在App_code文件夹中
web网站每一个页面(ashx)页面都是一个独立程序,一个页面出错了,不会影响另外一个页面。
网站中每个页面,都生成对应的程序集,名称是随机的,当文件保存以后,请求会自动保存一下。
如果你对文件中的代码改动了,ASSembley.GetExecutingAssembly().Location会重新编译生成一个新的
程序集,如果没有改动,则不生成。
通过 新建--项目
创建web应用程序有空间;
项目中建立一个文件或是修改了一个文件,一定要重新生成,生成的目的就是将项目生成对应的dll文件
放到bin/Debug目录下,(并且所有的类放在了该程序集中),如果项目中的一个文件出错了,是没办法
生成成功的。
在实际生产中,使用web应用程序 通过项目建网站