ashxjavascript
通常處理程序(HttpHandler)是·NET衆多web組件的一種,ashx是其擴展名。一個httpHandler接受並處理一個http請求,類比於Java中的servlet。類比於在Java中須要繼承HttpServlet類。在net中須要實現IHttpHandler接口,這個接口有一個IsReusable成員,一個待實現的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中處理接受到的Http請求。成員IsReusable指定此IhttpHandler的實例是否能夠被用來處理多個請求。css
.ashx程序適合產生供瀏覽器處理的、不須要回發處理的數據格式,例如用於生成動態圖片、動態文本等內容。html
例子:java
1 前臺Html:jquery
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ABC</title> <link rel="stylesheet" type="text/css" href="../easyui/themes/default/easyui.css" /> <link rel="stylesheet" type="text/css" href="../easyui/themes/icon.css" /> <script type="text/javascript" src="../easyui/jquery.min.js"></script> <script type="text/javascript" src="../easyui/jquery.easyui.min.js"></script> <script type="text/javascript" src="../easyui/locale/easyui-lang-zh_CN.js"></script> <script type="text/javascript" src="index.js"></script> <style type="text/css"> .code { background-image:url(/Images/verifyCode.png); font-family:Arial; font-style:italic; color:Red; border:0; padding:2px 3px; letter-spacing:3px; font-weight:bolder; text-align:center; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: none; user-select: none; } </style> </head> <body> <div style="margin:0 auto;position:absolute;top:50%;margin-top:-115px;left:50%;margin-left:-200px"> <form id="fm" method="post" novalidate> <div id="login" class="easyui-panel" title="登陸" style="width:400px;padding:30px 70px 20px 70px;"> <div style="margin-bottom:10px"> <input id="userName1" name="userName" class="easyui-textbox" style="width:100%;height:40px;padding:12px" data-options="prompt:'用戶名',iconCls:'icon-man',iconWidth:38"> </div> <div style="margin-bottom:20px"> <input id="password1" name="password" class="easyui-textbox" type="password" style="width:100%;height:40px;padding:12px" data-options="prompt:'Password',iconCls:'icon-lock',iconWidth:38"> </div> <div style="margin-bottom:20px; display:inline"> <input id="verifyCode" name="verifyCode" type="text" style="width:150px; height:12px; padding:12px; border: 1px solid #95BBE7 " /> <input id="checkCode" name="checkCode" value="XH59" class="code" type="text" onclick="createCode()" style="width:60px" readonly /> </div> <div style="margin-top:20px; margin-bottom:20px"> <input id="remember1" name="remember" type="checkbox"> <span>記住密碼</span> </div> <div> <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" onclick="Login()" style="padding:5px 0px;width:100%;"> <span style="font-size:14px;">登陸</span> </a> </div> </div> </form> </div> </body>
2 JQuery實現前臺html中的Login():web
function Login() { $('#fm').form('submit', { url: "../HttpHandler/LoginHandler.ashx?action=Login", onSubmit: function () { if (validate()) { return $(this).form('validate'); } else { return false; } //return $(this).form('validate'); }, error: function () { $.messager.alert('錯誤', '操做失敗!', 'error'); }, success: function (result) { var result = eval('(' + result + ')'); if (result.success) { location.href = "../Pages/MainPage.htm"; } else { $.messager.alert('提示', result.msg, 'warning'); } } }); }
3 後臺通常程序處理:LoginHandler.ashx:瀏覽器
namespace Web.HttpHandler { public class LoginHandler : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string sReturnJson = string.Empty; string action = ParamsofEasyUI.RequstString("action"); switch (action) { case "Login": sReturnJson = Login(); break; case "CheckLogin": sReturnJson = CheckLogin(); break; case "GetUserInfo": sReturnJson = GetUserInfo(); break; default: break; } context.Response.Write(sReturnJson); context.Response.End(); } private string GetUserInfo() { string result = string.Empty; //讀取保存的Cookie信息 HttpCookie cookies = HttpContext.Current.Request.Cookies["USER_COOKIE"]; if (cookies != null) { result += "{UserName:'"; result += cookies["UserName"]; result += "',UserPassword:'"; result += cookies["UserPassword"]; result += "',Checked:true}"; } else { result += "{UserName:'"; result += "',UserPassword:'"; result += "',Checked:false}"; } return result; } private string CheckLogin() { if (HttpContext.Current.Session.Keys.Count == 0) { return "{success:false}"; } string curUser = HttpContext.Current.Session["userName"].ToString(); if (curUser == null) { return "{success:false}"; } if (HttpContext.Current.Application.AllKeys.Contains(curUser)) { return "{success:true}"; } else { return "{success:false}"; } } private string Login() { string userName = ParamsofEasyUI.RequstForm("userName"); string password = ParamsofEasyUI.RequstForm("password"); bool blChecked = ParamsofEasyUI.RequstBool("remember"); string localPsw = Encoding.Default.GetString(Convert.FromBase64String(ConfigTools.Get(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory.ToString(), ConfigurationManager.AppSettings["ConfigFile"]), "CODE"))); if (userName.ToLower() == "admin" && password == localPsw) { if (blChecked) { HttpCookie cookie = new HttpCookie("USER_COOKIE"); //全部的驗證信息檢測以後,若是用戶選擇的記住密碼,則將用戶名和密碼寫入Cookie裏面保存起來。 cookie.Values.Add("UserName", userName); cookie.Values.Add("UserPassword", password); //這裏是設置Cookie的過時時間,這裏設置一個星期的時間,過了一個星期以後狀態保持自動清空。 cookie.Expires = System.DateTime.Now.AddDays(7.0); HttpContext.Current.Response.Cookies.Add(cookie); } else { HttpCookie cookie = HttpContext.Current.Request.Cookies["USER_COOKIE"]; if (cookie != null) { //若是用戶沒有選擇記住密碼,那麼當即將Cookie裏面的信息清空,而且設置狀態保持當即過時。 HttpContext.Current.Response.Cookies["USER_COOKIE"].Expires = DateTime.Now; } } string newGuid = Guid.NewGuid().ToString(); HttpContext.Current.Application.Lock(); HttpContext.Current.Application["admin"] = newGuid; HttpContext.Current.Application.UnLock(); HttpContext.Current.Session[HttpContext.Current.Session.SessionID] = newGuid; HttpContext.Current.Session.Add("UserName", userName); return "{success:true}"; } else { return "{success:false,msg:'用戶名或密碼錯誤!'}"; } } public bool IsReusable { get { return false; } } } }
namespace Web.HttpHandler { public class ParamsofEasyUI { public static string RequstForm(string name) { return (HttpContext.Current.Request.Form[name] == null ? string.Empty : HttpContext.Current.Request.Form[name].ToString().Trim()); } public static string RequstString(string sParam) { return (HttpContext.Current.Request[sParam] == null ? string.Empty : HttpContext.Current.Request[sParam].ToString().Trim()); } } }