【.net项目中。。】.net一般处理程序使用方法
2014-12-02 16:39
495 查看
1.基本原理图
一般处理程序
总结
这就是在前台直接可以不通过刷新来进行对用户名的校验,简单的一个小demon。关于一般处理程序,关键的地方就是在前台如何来需要的值传入到后台。这样在只要在一般处理程序拿到了前台的值后,那么操做起来就简单的多了。这里的值直接放在链接里面传过来的。
总结一下就三点:
1.传值,调用一般处理程序
2.处理,将结果返回给前台
3.前台处理返回的结果
4.一般处理程序ashx调用Session的方法
如何在ashx页面获取Session值?
请注意以下描红部分:
==========================
在一般事务处理页面,可以轻松的得到 Request,Response对象,从而进行相应的操作,如下:
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
但是要得到 Session的值就没有那么简单了。比如你要在ashx得到保存在Session中的登录帐号Session["userAccount"]
如果你只是context.Session["userAccount"]的话是会报 “未将对象引用设置到对象的实例”的异常
所以,如果要想取Session中的值 ,需要如下所示
1、引入 命名空间:
using System.Web.SessionState;
2、实现IRequiresSessionState接口,具体如下
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法
{
public void ProcessRequest(HttpContext context)
{
//...
//这样你就可以如下 操作了
if(context.Session["userAccount"] != null)
{
string account = context.Session["userAccount"].ToString();
}
//...继续下面的代码
}
}
[b]5.深入解释一般处理程序运行过程[/b]
[b]服务器怎么接收和发送数据?[/b]
[b]在一般处理程序里,通过ProcessRequest方法的参数HttpContext context调用[/b]
系统对象 作用
Page 指向页面自身的方式。作用域为页面执行期。
HttpRequest 读取客户端在Web请求期间发送的值(http请求报文数据)
HttpResponse 封装了页面执行期返回到HTTP客户端的输出(http响应报文数据)
HttpApplication 作用于整个程序运行期的状态对象
Session 会话期状态保持对象,用于跟踪单一用户的会话。
Cookie 客户端保持会话信息的一种方式
Server 提供对服务器上的方法和属性的访问
Request(HttpRequest) & Response(HttpResponse)
一、浏览器提交数据方式?(例) get/post
1.表单:(数据藏在请求报文体中,格式:txtname=james&txtpwd=123) <form action=“login.ashx” method=“post”> <input type=“text” name=“txtname” /> <input type=“password” name=“txtpwd”/> </form>
2.地址栏的URL参数,超链接的url,js指定的url(和表单的Get方式一样):键值对http://127.0.0.1/login.ashx?txtname1=jordan&txtpwd1=123
二、服务器如何获取浏览器提交的数据?
1.获取POST数据:context.Request.Form[“txtname”]
2.获取GET参数:context.Request.QueryString[“txtname1”]
三、服务器如何向浏览器输出数据?
context.Response.Write(“我是从服务器输出到浏览器的数据!:)”);
Request(HttpRequest)常用成员
页面间传递数据的几种方式?(get/post : 超链接,location,js的submit(),表单提交按钮)
入门1.html
<form action="入门1.ashx"> <input type="text" name="username" /><input type="submit" /> </form>
新建一个【一般处理程序】入门1.ashx, ProcessRequest中写
context.Response.ContentType = "text/html";
string username = context.Request["username"];
context.Response.Write(username + "<font color='red'>你好</font>"+Guid.NewGuid());//根据当前电脑的硬件编号+系统时间微秒数
每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,在这里通过访问context.Request获得访问者的请求参数等。然后在ProcessRequest中通过context.Response向浏览器发回数据给浏览器。ProcessRequest结束之时就是服务器为这个浏览者本次访问服务完成之时
浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给JS操作Dom用的,name才是提交给服务器用的。在服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。通过context.Response.Write向浏览器输出处理后的显示HTML内容。
当我们点击【提交】按钮以后是浏览器将用户填写的文本框等控件中的值“提取”出来发送给服务器,而不是服务器来读取用户填写的这个页面。哪些标签的哪些值会被提交给服务器呢?将用户填写的内容提交到服务器有如下几个条件:
只能为 input、textarea、select三种类型的标签。只有input(文本框、CheckBox等)用户才可能填写值,<label>、<p>、<font>等标签仅供显示用,没有提交到服务器的必要。
只有value属性的值才会提交给服务器。以input标签为例,input标签有title、type、disabled等属性,但是这些属性都是供显示用的,用户并不能修改,只有value属性才是用户输入的属性,因此只有value属性的值才会被提交到服务器。
标签必须设定name属性。学习Dom的时候我们知道如果要通过JavaScript操作标签,必须为标签设定Id。如果要将标签的value属性值提交到服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器,多个键值对之间用&分割。除了单选按钮等少数标签之外,大部分标签的name的值不能重复。name是给服务器用的,id是给Dom用的。对于RadioButton,同name的为一组,选中的RadioButton的value被提交到服务器。
如果设置了控件的disabled属性的话,浏览器也不会提交该控件的值。
放到form标签内。只有放到form标签内的标签才可能会被提交到服务器,form之外的input等标签被忽略。
public void ProcessRequest(HttpContext context) { //获取从前台传过来 string userName = context.Server.UrlDecode(context.Request.QueryString["username"]); //声明查询用户名是否存在的对象 userBLL verifyusernamebll = new userBLL(); //通过其他的函数来判断 bool flag=verifyusernamebll.Exists(userName); if (flag==true) { context.Response.Write(true); } else { context.Response.Write(false); } }
一般处理程序
总结
这就是在前台直接可以不通过刷新来进行对用户名的校验,简单的一个小demon。关于一般处理程序,关键的地方就是在前台如何来需要的值传入到后台。这样在只要在一般处理程序拿到了前台的值后,那么操做起来就简单的多了。这里的值直接放在链接里面传过来的。
总结一下就三点:
1.传值,调用一般处理程序
2.处理,将结果返回给前台
3.前台处理返回的结果
4.一般处理程序ashx调用Session的方法
如何在ashx页面获取Session值?
请注意以下描红部分:
==========================
在一般事务处理页面,可以轻松的得到 Request,Response对象,从而进行相应的操作,如下:
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
但是要得到 Session的值就没有那么简单了。比如你要在ashx得到保存在Session中的登录帐号Session["userAccount"]
如果你只是context.Session["userAccount"]的话是会报 “未将对象引用设置到对象的实例”的异常
所以,如果要想取Session中的值 ,需要如下所示
1、引入 命名空间:
using System.Web.SessionState;
2、实现IRequiresSessionState接口,具体如下
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法
{
public void ProcessRequest(HttpContext context)
{
//...
//这样你就可以如下 操作了
if(context.Session["userAccount"] != null)
{
string account = context.Session["userAccount"].ToString();
}
//...继续下面的代码
}
}
[b]5.深入解释一般处理程序运行过程[/b]
[b]服务器怎么接收和发送数据?[/b]
[b]在一般处理程序里,通过ProcessRequest方法的参数HttpContext context调用[/b]
系统对象 作用
Page 指向页面自身的方式。作用域为页面执行期。
HttpRequest 读取客户端在Web请求期间发送的值(http请求报文数据)
HttpResponse 封装了页面执行期返回到HTTP客户端的输出(http响应报文数据)
HttpApplication 作用于整个程序运行期的状态对象
Session 会话期状态保持对象,用于跟踪单一用户的会话。
Cookie 客户端保持会话信息的一种方式
Server 提供对服务器上的方法和属性的访问
Request(HttpRequest) & Response(HttpResponse)
一、浏览器提交数据方式?(例) get/post
1.表单:(数据藏在请求报文体中,格式:txtname=james&txtpwd=123) <form action=“login.ashx” method=“post”> <input type=“text” name=“txtname” /> <input type=“password” name=“txtpwd”/> </form>
2.地址栏的URL参数,超链接的url,js指定的url(和表单的Get方式一样):键值对http://127.0.0.1/login.ashx?txtname1=jordan&txtpwd1=123
二、服务器如何获取浏览器提交的数据?
1.获取POST数据:context.Request.Form[“txtname”]
2.获取GET参数:context.Request.QueryString[“txtname1”]
三、服务器如何向浏览器输出数据?
context.Response.Write(“我是从服务器输出到浏览器的数据!:)”);
Request(HttpRequest)常用成员
页面间传递数据的几种方式?(get/post : 超链接,location,js的submit(),表单提交按钮)
入门1.html
<form action="入门1.ashx"> <input type="text" name="username" /><input type="submit" /> </form>
新建一个【一般处理程序】入门1.ashx, ProcessRequest中写
context.Response.ContentType = "text/html";
string username = context.Request["username"];
context.Response.Write(username + "<font color='red'>你好</font>"+Guid.NewGuid());//根据当前电脑的硬件编号+系统时间微秒数
每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,在这里通过访问context.Request获得访问者的请求参数等。然后在ProcessRequest中通过context.Response向浏览器发回数据给浏览器。ProcessRequest结束之时就是服务器为这个浏览者本次访问服务完成之时
浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给JS操作Dom用的,name才是提交给服务器用的。在服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。通过context.Response.Write向浏览器输出处理后的显示HTML内容。
当我们点击【提交】按钮以后是浏览器将用户填写的文本框等控件中的值“提取”出来发送给服务器,而不是服务器来读取用户填写的这个页面。哪些标签的哪些值会被提交给服务器呢?将用户填写的内容提交到服务器有如下几个条件:
只能为 input、textarea、select三种类型的标签。只有input(文本框、CheckBox等)用户才可能填写值,<label>、<p>、<font>等标签仅供显示用,没有提交到服务器的必要。
只有value属性的值才会提交给服务器。以input标签为例,input标签有title、type、disabled等属性,但是这些属性都是供显示用的,用户并不能修改,只有value属性才是用户输入的属性,因此只有value属性的值才会被提交到服务器。
标签必须设定name属性。学习Dom的时候我们知道如果要通过JavaScript操作标签,必须为标签设定Id。如果要将标签的value属性值提交到服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器,多个键值对之间用&分割。除了单选按钮等少数标签之外,大部分标签的name的值不能重复。name是给服务器用的,id是给Dom用的。对于RadioButton,同name的为一组,选中的RadioButton的value被提交到服务器。
如果设置了控件的disabled属性的话,浏览器也不会提交该控件的值。
放到form标签内。只有放到form标签内的标签才可能会被提交到服务器,form之外的input等标签被忽略。
相关文章推荐
- .NET使用一般处理程序生成验证码
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码
- .NET使用一般处理程序生成验证码!
- AjaxFileUpLoad 文件异步上传Demo(模仿官方网站,后台使用.net一般处理程序)
- .NET中一般处理程序(ashx)在Ajax中的使用--下拉列表的动态级连
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码(网摘学习)
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!
- .NET使用一般处理程序生成验证码!