这个项目整体采用代码生成器生成,具体看下图:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPkAAAC/CAIAAACzLO22AAATuUlEQVR4nO2dzYsjxxmH/ceox7PEy3q7vTMJ2GwOYseHHjBBybDJxRCL2UuINocWhOC9BI2wc2uBPOBszEJYm4Xg1Cm2EweDyCmHTd/N7mEOPgSLMeTgEHlyqO7qt776SzNSS/UbHpZZTX+p+6m33y7Vq3rh+vWXb9++A8DW84JwPQj2Adhi4DpwBbgOXAGuA1eA68AVrK77veGofyB+n46G0eik392zbajbPxHLS9vxj6LpsOfvZb9PT7Of6dS8wW7/JOpZdxQE+71oatxX6TJ+93gkHUz6u7bMSb+75/eGp6af6ei46+/5veGUrO77B/3RVBw2/69YJYrUTfH3ri7W2+v2T5QdLXmBbW/TQUpc5xdjOh32/IP+6CSKTsh1ksQ1Xssg2BcXj5vn+wf90bDn88t80u/u6WaXuu77R5HWTvzu8ajC8Qjde5FhYb7fVPf+cBodGQ9Jf+/T0Qnde9oeusej6IifTL4pvh3x3sXZEH8SIcP3jyLierd/Ig6G7l28WHiuqrpeJYhsKL/+9W8MrtNgI8K5uDxBsN+LDPHYGNf5xaZXVFxCXXpjHOWGGb2UVIuOcrHkEJtdxfyY/d5wFA1HmSW9aBr19vzu8UiOo1xQGmhFm+lF02l05PeG3Olu/2Q6Hfb8o2gq7Ze6bmx7FeM6PTa+qfwGQkKSMUDUcp1e5S3jL3/5pFJcz6XvD/PrZLnF0yunODrqH/DIwV/PA1XmhGg2/LIZQ74t8ChS6j98xV40nY6Oe90sdk6nPCSLHXGPqet5LlfYLJX3rrhujOv6Wxj1D/S7Fm+N4oB1p2u5TkOPYfnesPResYl8+eWXVVw3x3WR0EsZefegS+7I6Z94WOoNTyvcc4My10vSG/lSKVda3KO5rFP5T+Lw8rBtiev0YcZ2/KKdT6dpjNC3U9o+p6PjLjnz4k4ivWWa0qTLT6Meb8bH3Qqui0eUQL6HbBOfffa3ItdP03Cu5g/0mVJVYXTSt+e1o/4Bt0QJz373OCL/FWFMN1tPZpQH3G73gAbdqXb7tj1mGJa0x3XbdpSDqR7X+db4HU8JB1IoMbkeyHGdPGKZH8FLXN/SZ9nHjz8qytclHe2ZnNS5oWSTclwX2Qu1Pwj2u/1hv2t90s3TVrMi5k4eetOn70V55jNe/jSDz5ql0WbjdpQnGSU3C7TWS2I/6dKhbXV03JWT9Yquq5eAXB39/Gub2raUfTQan5+fV83XpetN82yboKa+mlH/mJ93OVhK0vBtmlNPuZsvKAxCtjSD7o50etCn5/Rii9tLYLqz2+8P5CE4c92Yq2QBXmqfquj+ntaeDSJWdJ0sbM/Xty6uc9HLXdfOo/lcB5ZnmlQsEdej4Ujtqjvu9oZKt3TU29O7evifFH2pguW5b9pLk7tOnvn0nqL0ndJbUz+SHTKFWKnDp3s8mk6VlE/uu1T7HKWnoNx1aQtSc9L6YZZ1ndyltwAheiXXs0s4PTUltVl32x53Pb26IvCTBkA3aA6oJKKnSWfeo3zQH00Nj2XGZzV+tXrDUf/Y2jL5cWZPI0oKwdN0vuX0QTxtVHK+bnddBOziZ+sqcT0gbVIcodKAg6ypk2fTGq4rWejW9MNQ0R8+/MDsOj9xNL0WHRTiMvSjNA8WAZV2+vJVelF6BnuRlDSrz6Z2lU+zvkvFez1hoMfGP9dUcjDetZKtqOdCqZr82Liy4vOd/LaQ9+KX5zC0XRmWTL0sievB1feNCL+3LFl/+PADIXqA8TCbAv3c9NIR943t+9z04cMPuOgBXAfuANeBK8B14ApwHbjCC/geAeAIqevXr78MwHYD14ErpK573g4A2w1cB64A14ErwHXgCnAduEI912eVf9b+xgBQgOvAFVbqeqdzn83ZoONlv8/FUPr5PIlDT18ljBM2MLwuGLB5Eh8WH3aVZTaUME7m2Sk1n/MBO9d+5uy+7U8F12LTqe36tWsvlWJzPYwTfja5eZ3OYZywQcfrdA7jJIlDTze71PVO5z7Trk0nnCSkIRmvpVix0zmMk7l+gXlrnCeTsMAksiPTFg7jZM7FKjha8U7FksLCEo/DSTJnMVmRM2D5e+dnT5xqafUBU1bMlkyPcMtixOpc74SThN2nJ73Tuc+SSZi6LklvDDn8stELaVaZ3ef7ErYprWXAhOtip/MkSZTryltmgeudAaN+c+/pvjrhJEmShPhK72zqycl21Bmw4gZGdmeVUmxQb/ai/ZS6Tn/fApZy/cWd3Rd3dnd3v1fFdcXRJD7kV4i/noe0TFMvE47bYwz5tqgjbiC2nyQ+VFxn8USW8jBOkji2asejvnJInQGjkZgf4YDli9lcF8tU1EtpV2lzJWdDcp28BSnWVMhhjO1hQ6nn+ptvvvnizq4QfTwef/zxx/TForjOLzM/9QNG/S6g2PWS9Ea+TtaYmsV+Gh3T4JqGWMkk+U962qMGxdI4LYXScJIkkziLC8bGTHN02uAHLM+4dNf56VJcL47rnnzD2XTquT4ej8fjMQ/n4/GYPolWc30uRdYBS+JDJTx3wgkj/xUBTzdbT2aUjDkMD2nosuW+wnURlaVXuDHEV35IRoNpypSva8/RyZmRYm26BZKl0Hc9l+970tkTb+GyXLcEiE2kST8MN342m731Vr+m63lcF9kLtd/zdsKYxaHUKiSbRdzS7vUFnTxZepC+qKa2wuwsfuuKkwfZLPOxum7IoYsf8gqS9dKnQ1siV9H18hxmi1L22q4Lv996q8+1bhrXJ1waerXE02p+wbScOP2TnBl7hRGI30Bsb0oPxnFmGDWPH6foLSnO15U3W3BXUY5cyRmWcp03bMb4BrMncsT1aksv63oyCUVcZ0ztH0gm4YApz1tskF4k7XpYex68Cs+mch5PXOf9jLSnQsqAGSMehHFi64dRmqKxYUhnRsrys5ZmymEUjK7zG6bUI8QfkOStVc3XnXXdlsOUfpZEzywNtOJqSSGHeiP3Uqf/1fMHY1LBL9WAJfHEljQr/ZJKP7eSUSi7sPWvK1m18RXlr3JfzZxmXwUUdEZJuyZ3G70XvyiHcbYfhlsufq81ImDAUo951NFdz660VWV+7ak0fGGjajS/501LWrjR9bu6z1Yad3cUu86bov65gfjcFP3rVRF9jmt/Gyvgqu/m9H7SEpz+3HQZPrr18j++H/x939/dwFd+9fG/+V2lJcezllc2ndW5/sn+zV1v59ErN/74yg3P23nn5nW8skGvbAGp68HpBQDbDVwHrgDXgStcuet1k6q1nxGwrVR1/ed/brgDz9sZ/+u3FYHr4Oqo6vp//ttQd+56lQqPlrvuP1k8XywePflu7UcCmlHV9YuLi2++baL7kq777y0ezRcX2c9isXjwXiXbuJpiLcVRvtnFs4Vx3QfPyB7ni7vvfRfA9c2nhuvRZ010p67r48bEv8Wuf/F5iWHKYv7nC+o315RuxH+yeD5fPLe0nAfPFs+fLsTvtiYBNosargenTXQXrnPRg+DWtWsvvfbqbWWs2CW67r+3+GKhrsLtF2bffbp4/nTx4Jl5y9T1u0/h+pZQz/Xg9OL0nxfffHvxwz9U3YFwfTabvfHGj5Shv83i+t2nubg87n4h0pX54u7nC5F40O18kUV6vs1HT77zTUsGxHWpCT1J7wN3n+YZzsXFBVrCplDP9Z//+eKbby+iz2rswOZ6rbiui8V1FLJKUlpc1xegDYBSkK/TnMfWVEA7qeF6A9ED4noUDWkOs2S+zjVdyKG61HW+sJKOi98F9EWR/Ciu6+qDllOvH6au6IH8bMp1n81mP/3pz2r1w9RzvTBf53+VkhBNWcn1LPZTuW03BNBmqrr+v0UT0YNL6nPUXec63n1qyGGCLKE39sMoD6miYdAuxeK4XvFxGbSNqq43Ez24gv71R0++e/BMUpwn8fyRUUmv9f51vQ+Rv6K4rkd94Tr9K55NN4hVjIfBGAHQBjD2C7gCxvQCV4DrwBXgOnAFzA0GXAGuA1eA68AVqrre6/248T5q9a8DcEVUdf2rr75qrHutz003jm361ubtpqrr5+fnZ2dnzXRfxnX6haPF32KurlhzhrrGe1TmXZK+YhsNoE3UcP3evXvNdK9Vg6dgnMiudLEGM9QVbKr4u6HVOcbKDrXxewRLUsN1z9tppnutGjyFBq43m6GuYI/F39AL1zeFeq573s677/7u7OzM94Pq+6hVg6dg9IBOBDdg8zlj4sv5l5+hzuA6bUgkNSJNy+q6vny2ipjpbiIdvDz/TD7DR7pxPr0wY/q8fMiXyqjneq/347Ozs3v37tXaR60aPAU1Cc4ybP7V4GTuLsMEdPp2qsxQV+B6p3MYMzKJVz5ZhSFfT2c3MC8/16dXoDclyWOycePkNsa7E9Cp4Xoz0b2aNXgKtvt7NrGRNM1QmeuVZqizuC5Nk0SDbmkOoy6vHV7BwStz9Ml3BmlevrWb1H7q9cM0EN2rWYOn0MT15WaoM7gu7gNkShaRxBe4bl6+tuti/jpp48q8fKCUqq5//fXXzUT3LqPPUXedx+MwTvQcxms0Q52YdK6gS0eZArI0rtuXz5tlnE3kZM1hTG/QM83LB4qp6npj0b1L7l9P4tAT89HRbnKeKkhTNNaZoU5x3dhNTv+UMFYe103L02OjU61Xezb11CPHU2llVjEeBmMErogtm7vrqsHYr01lm2bZXQ1wfSPRZ6YGpcB14ApwHbgCXAeuANeBK8B14AqowQOugBo84Artr8FTh2oVdCorw2A8eaSAvq74DN/4SXutXRv3DlpF+2vwagg3YHNqmxhMS3+kgeP5uBSDo3VdV/YO2kb7a/D42F3pw3D+qSEfwsXrQefJJGZSSYcwlY4ZVLTmjYExdk6qQIp3nb6YTMIBo41nwAwFJaBVtL8GTwqu87xAgQfRXEfFNtEGQq2RZKNnD+OEjxM0OF2y6yRJ5KGIcL39tL8GzyCclwVpJbWgWUQ6SlbWjr+YFk8MmPg9DfBqNl/czERdXF7uhBymzbS/Bs8WdA2PlQbX7XGdRmJjPC7JYTqq33C95bS/Bs/iOonrtHg0D/zZc6eWr5sr8c4NxXhwfatofw2eKmUSHxILJR1FqKaVSsoPTWBoIBchX+Q5Rbu2uI58vc20vwZPF+4+z15oqk1rn6ltNPwrhdhKgi6eZQdNXdf3DloFavCAK2DsF3AFuA5cAa4DV4DrwBXgOnAFuA5cAa4DV0ANHnAF1OBdJvg29DbT/hq8Vc+D55HvBG08J97aryvQaX8N3qrnwfM01xvMibf26wp02l+Dt+p58Dy7617lOfHWfl2BTvtr8FY9D55X7Hq1OfHWfl2BTvtr8FY9D55XzfXiOfHWfl2BTvtr8FY9D55X7nr5nHhrv65Ap/01eKueB88rdr3anHhrv65Ap/01eKueB88r7IepOCfe2q8r0Gl/Dd6q58HzCvrXK8+Jt/brCnRQgwdcAWO/gCvAdeAKcB24AlwHrgDXgSvAdeAKcB24AmrwgCugBm8pNuWD0k05zisFNXimdcn4sOIyEepQ9bWWB8WBDUANnnkEJZlTqUgR4VCttZYHxYENQA2e5no4SUzFSpb9Zq7XWWt5UBzYANTgGZe0jphXxjwa47ptLXmcMJ+zgLEkLxYhQ5SL15qEKA6sD2rwTLP4kpmVstUllcmgYpKvm9dSq0my2fPytZS3UGktFAdeqevu1OBx6KyRyjbl1iI5pKx1Lv8k8aGaamdm58VNldZCcWBtUINX1ImRVy1Vdr1gLds7EjVWYt6y0rVQHNgA1OCpNXidcJKIqcVE0FW7WdQcpnQtz9sZMK6d6bEyYSwR7bZ8LRQHNgA1eIYaPDpZpNKvl24tNsR181qGx0Rzqk2PqnQtFAc2ADV4TbB9iRJoMxj71QS4vonA9SbA9U0ErgNXgOvAFeA6cAW4Dlxhpa6H4WEcx3QYTBzHYWj+iB6Ay2UVNXict99+e2b5GY/Haz8RYOtZRQ2eR0SPouHjxx/eufN6ENx6/PjDKBp++umn26F7xaH2YF2sogYvDA/FkK87d16PoqEoU+KvcN1/8pMjfd3V1+ApgwjEkBvjf/VtwvXWspIavPGYR3Q+1PHOnde566+9evudd969du2lX/zil7PZ7P3339fXXUMNHvmcKBs1Lg2nsY0BhustZxU1eDxsV/nR111PDd6cDjlkjNERjobajlqHCtbFKmrwROXRtWsv/f73D+nYRvHfx48/nM1mep/MOmrw5LIPdj+Mk7T2gtR0FpfJKaMdQRtYRQ3e8q7n+fpKavCE3Dzwi7pprr5XvbjO+WG0rWIVNXhXkcNcaQ1eJncW/rNfxMLNyuTAellJDZ7l2TQIbjV+Nr3SGry0soF8DcaAzdkgby3NyuTAellFDV7FPkfjB6hrmQePb58xJkJ+J/2/6J+xlsmJLIs+VIA2sIoaPE/7LOm1V29X/CxpLTV4XpalyNX+1crkGLPdLsB6Wd14GIwRAOsFY7+AK7R9TO9Ht17+x/eDv+/7u5v8CmgDbXf9k/2bu97Oo1du/PGVG563887N6xv3CmgJbXf9xs6Lnrez6+38df/mn27d/NcPgo17Ze3nEHDa7joAlwVcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB64A14ErwHXgCnAduAJcB67wfyzMo9xi2WnEAAAAAElFTkSuQmCC" alt="" />

一、实现登录的思路:

1.添加系统CSS和JS

2.构建登录的Login.aspx的页面HTML

3.编写登录Ext.js的代码

4.编写CSS 实现登录与密码框前的小图标

5.实现登录验证码

6.实现登录的前后台编码

二、具体代码:

1.添加系统CSS和JS

<script type="text/javascript" src="/Web/Ext/adapter/ext/ext-base-debug.js"></script>
<script type="text/javascript" src="/Web/Ext/ext-all-debug.js"></script>
<script src="/Web/JavaScript/Common/Global.js" type="text/javascript"></script>

2.构建登录的Login.aspx的页面HTML

<body>
<div id="hello-win" class="x-hidden">
<div class="x-window-header">登录入口</div>
<div id="hello-tabs">
<img src="data:images/systemBanner.jpg"/>
</div>
<div id='loginInfo' style='color:red;padding-left:120px;'> 请输入已经通过审核的用户名与密码进行登陆!
</div>
</div>
</body>

3.编写登录Ext.js的代码

 
  <script type="text/javascript">
Ext.onReady(function () {
Ext.BLANK_IMAGE_URL = "/ExtOA.Web/Ext/resources/images/default/s.gif";
var loginForm = new Ext.FormPanel({
el: "hello-tabs",
id: "loginForm",
name: "loginForm",
border: false,
//配置项
items: {
//xtype可作为Ext控件的简写,都会对应一个Ext控件
xtype: "tabpanel",
//第一项
activeTab: 0,
defaults: { autoHeight: true, bodyStyle: "padding:10px" },
items: [
{
title: "管理员登录",
//显示对应的div
contentEl: "loginInfo",
//排列的方式
layout: "form",
defaults: { width: 230 },
//默认的类型
defaultType: "textfield",
//里面具体的内容
items:
[
{
//引入css样式的写法
cls: "user",
fieldLabel: "帐号",
name: "staffName",
style: "font-size:15px",
//不允许为空
allowBlank: false,
//提示
blankText: "帐号不允许为空!"
},
{
cls: "key",
fieldLabel: "密码",
name: "staffPwd",
style: "font-size:15px",
//文本类型
inputType: "password",
allowBlank: false,
blankText: "密码不允许为空!"
},
{
fieldLabel: "验证码",
id: "validateCode",
name: "validateCode",
maxlength: 4,
width: 100,
//大小
style: "font-size:15px",
allowBlank: false,
blankText: "请输入验证码!"
},
] },
//第二块选项卡
{
title: "关于本系统",
layout:"",
html: "OA办公平台 v 1.0<br> 版权所有 孙丽媛 © <br/>技术支持:13593372136@163.com"
}
] }
}); //创建windows窗体对象
var win = new Ext.Window({
el: "hello-win",
width: 490,
height: 280,
//关闭的时候隐藏
closeAction: "hide",
//内部为透明的
plain: true,
//为模态显示
modal: true,
//是否允许折叠
collapsible: true,
//是否允许拖动
draggable: true,
//是否允许关闭
closable: false,
//登录窗体作为项
items: loginForm, buttons: [
{
text: "确定",
handler: function () {
//判断是否通过验证
if (win.getComponent("loginForm").form.isValid()) {
//进行提交
win.getComponent("loginForm").form.submit({
url: "handler/CheckLogin.aspx",
waitTitle: "提示",
waitMsg: "正在登录验证,请稍候...",
method: "POST",
success: function (form,action) {
var loginResult = action.result.success;
if (loginResult) {
window.location.href = action.result.href;
} else {
Ext.Msg.alert("提示",action.result.message);
}
},
failure: function (form,action) {
Ext.Msg.alert("提示", action.result.message);
//失败得到图片的对象
var imgSN = Ext.getDom("imgSnCode");
if (imgSN)
{
//加参数
imgSN.src="handler/VerifyCode.aspx?datetime=" + (new Date()).getTime();
}
},
});
}
// alert("确定");
}
},
{
text: "重置",
handler: function () {
//获取loginFrom的主建 或者直接获取
win.getComponent("loginForm").form.reset();
// loginForm
//alert("重置");
}
}
]
}); //让窗体显示
win.show();
//得到验证码控件
var db = Ext.getDom("validateCode");
//得到父节点
var db2 = Ext.get(db.parentNode);
//用DomHelper得到getDom 的值
db2.createChild([{ tag: "span", html: "   " }, { tag: "img", id: "imgSnCode",style:"cursor:pointer",title:"看不清楚?", src: "handler/VerifyCode.aspx", align: "absbottom" }]); //让验证码刷新
var imgSN = Ext.get("imgSnCode");
if (imgSN) {
imgSN.on("click", function () {
this.dom.src = "handler/VerifyCode.aspx?datetime=" + (new Date()).getTime();
});
}
}) </script>

5.实现登录验证码

1.后台验证码的帮助类:

 

   /// <summary>
/// 产生一个随机数
/// </summary>
/// <param name="codeCount"></param>
/// <returns></returns>
private string CreateRandomCode(int codeCount)
{
string allChar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z";
string[] allCharArray = allChar.Split(',');
string randomCode = "";
int temp = -1; Random rand = new Random();
for (int i = 0; i < codeCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
//不相等的话继续产生
return CreateRandomCode(codeCount);
}
temp = t;
randomCode += allCharArray[t];
}
return randomCode;
} private void CreateImage(string checkCode)
{
//创建宽度
int iwidth = (int)(checkCode.Length * 11.5);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
Graphics g = Graphics.FromImage(image);
Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
Brush b = new System.Drawing.SolidBrush(Color.Blue);
//g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
g.Clear(Color.White);
g.DrawString(checkCode, f, b, 3, 3); System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
//清空内容项
Response.ClearContent();
Response.ContentType = "image/Jpeg";
//客户端输出二进制数据
Response.BinaryWrite(ms.ToArray());
g.Dispose();
image.Dispose();
}

2.前台js的调用:(动态产生图片)

   //得到验证码控件
var db = Ext.getDom("validateCode");
//得到父节点
var db2 = Ext.get(db.parentNode);
//用DomHelper得到getDom 的值
db2.createChild([{ tag: "span", html: "   " }, { tag: "img", id: "imgSnCode", src: "handler/VerifyCode.aspx", align: "absbottom" }]);

3.后台核心代码:

1.指向的页面: (为aspx页面)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="VerifyCode.aspx.cs" Inherits="VerifyCode" %>

private void Page_Load(object sender, System.EventArgs e)
{
string checkCode = CreateRandomCode(4);//产生一个数字+字母组合的随机四位数
Session["CheckCode"] = checkCode; //将此四位数保存至Session,供登录验证
CreateImage(checkCode);//根据此验证码产生图片返回到调用端
}

6.实现登录的前后台编码

前台:重置按钮:

  win.getComponent("loginForm").form.reset();

确认按钮:(通过Submit提交)

                           //判断是否通过验证
if (win.getComponent("loginForm").form.isValid()) {
//进行提交
win.getComponent("loginForm").form.submit({
url: "handler/CheckLogin.aspx",
waitTitle: "提示",
waitMsg: "正在登录验证,请稍候...",
method: "POST",
success: function (form,action) {
var loginResult = action.result.success;
if (loginResult) {
window.location.href = action.result.href;
} else {
Ext.Msg.alert("提示",action.result.message);
}
},
failure: function (form,action) {
Ext.Msg.alert("提示", action.result.message);
//失败得到图片的对象
var imgSN = Ext.getDom("imgSnCode");
if (imgSN)
{
//加参数
imgSN.src="handler/VerifyCode.aspx?datetime=" + (new Date()).getTime();
}
},
});

后台代码:CheckLogin.aspx

 string username = Request["staffName"].ToString();
string password = Request["staffPwd"].ToString();
string reqCheckCode = Request["validateCode"].ToString();
//保存在session中的验证码
string checkCode = Session["CheckCode"].ToString();
//思路:先检查验证码是否正确,是否存在用户名,最后判断密码
if (checkCode != reqCheckCode)
{
Response.Write("{success:false,message:'登录失败,您输入的验证码和系统产生的不一致,请重新输入!'}");
}
else {
ExtOA.Biz.UserInfoBiz helper = new ExtOA.Biz.UserInfoBiz();
ExtOA.Ent.UserInfo userinfo = helper.GetUserInfoByUserName(username);
if (userinfo != null)
{
if (userinfo.PassWord == password)
{
Session["CurrentUser"]==userinfo;
Response.Write("{success:true,href:'/Web/Manage/DeskTop/index.aspx',message:''}");
}
else
{
Response.Write("{success:false,message:'登录失败,您输入的密码不正确,请与管理员联系!'}");
}
}
else
{
Response.Write("{success:false,message:'登录失败,您的用户名尚未通过验证,请与管理员联系!'}");
}

后台代码部分思路:

1.ExtOA.IDal添加一个新方法

2. ExtOA.SqlServerDal实现ExtOA.IDal方法

3.UserInfoBiz业务逻辑层中调用ExtOA.SqlServerDal中的方法

4.CheckLogin中调用UserInfoBiz

ExtOA.IDal:

 UserInfo GetUserInfoByUserName(string usernaem);

ExtOA.SqlServerDal:

   /// <summary>
/// 根据用户名获取用户实体
/// </summary>
/// <param name="usernaem"></param>
/// <returns></returns>
public UserInfo GetUserInfoByUserName(string usernaem)
{
UserInfo result = null;
string sql = "Get_UserInfo_By_UserName";
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(ConnectionString))
{
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(sql, connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
//command.CommandTimeout = 0; System.Data.SqlClient.SqlParameter p_userName = command.Parameters.Add("@UserName", SqlDbType.VarChar);
p_userName.Direction = ParameterDirection.Input;
p_userName.IsNullable = false;
p_userName.Value = usernaem; connection.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
if (dr.Read())
{
result = new UserInfo();
result = PopulateUserInfoFromIDataReader(dr);
}
dr.Close();
} command.Dispose();
connection.Close();
}
return result;
}

UserInfoBiz:

   /// <summary>
/// 根据用户名获取用户的实体
/// </summary>
/// <param name="usernaem"></param>
/// <returns></returns>
public UserInfo GetUserInfoByUserName(string usernaem)
{
try
{
IUserInfoDR dal = UserInfoDal.Create(Config.Instance().Dal, Config.Instance().MyConnectstring);
return dal.GetUserInfoByUserName(usernaem);
}
catch (Exception ex)
{
//log.Error("SetUserInfo err:",ex);
return null;
}
}

效果图:

aaarticlea/png;base64,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" alt="" />

Ext.js项目(一)的更多相关文章

  1. Ext.js项目(二)

    人事管理模块: 1.机构管理 2.部门管理 3.人员管理 一:用例图

  2. Sencha Cmd创建Ext JS示例项目

    Sencha提供了免费的Cmd工具,可以用来创建Ext JS项目并提供了一些便利的功能. Sencha也在官方文档中提供了一个示例来演示如何创建一个Sample Login App. 本文就介绍一下这 ...

  3. 将Ext JS 6应用程序导入Web项目

    由于Ext JS 6包含了Sencha Touch,因而在应用程序结构有了些改变,Ext JS 5的方法已经不适用于新版本了.经过研究,发现6导入Web项目要比5简单. 下面来说说导入的过程. 使用S ...

  4. 将Ext JS 5应用程序导入Web项目以及实现本地化

    在Ext JS 5,使用了新的脚本和样式加载方式,这对于将应用程序导入到Web项目中产生了点小麻烦.而对于本地化文件的导入,也采用了新的方式,本文将一一解答这些问题. 将Ext JS 5应用程序导入W ...

  5. Ext JS 如何动态加载JavaScript创建窗体

    JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...

  6. sencha ext js 6 入门

    Sencha Ext JS号称是目前世界上最先进和最强大的.支持多平台多设备的JavaScript应用程序开发框架.首先看一下Ext JS的发展简史. 1 Ext JS发展简史 YUI-Ext的作者J ...

  7. Ext JS - 问答

    Ext JS - 问答 在下面你将可以找到关于Ext JS 的最常见问题的答复.如果没有找到您所需的答复,请访问 Ext JS 论坛或者提交一个支持申请. 如果你确信你的问题可以对本页有补充,请让我们 ...

  8. 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市

    以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...

  9. 初探 Ext JS 6 (sencha touch/ext升级版)

    Sencha Touch 现在已全面升级至Ext Js 6,那么我们如何使用他们呢? 首先去官网下载最新的sdk和帮助文档 sdk下载地址:https://www.sencha.com/product ...

随机推荐

  1. javascript 常用的正则表达式验证表单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 单例设计模式Singleton之懒加载模式(懒汉模式)【原】

    单例设计模式Singleton之懒加载模式(懒汉模式) SingletonLazy.java类 package kingtool; import kingtool.http.IPTool; publi ...

  3. Python中re(正则表达式)模块学习

    re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood is a handsome boy, he ...

  4. dragula 一个 JavaScript 库,实现了网页上的拖放位置

    如图,把上面红蓝色拖放到下面 使用方法比较简单,如下代码: <link href='dist/dragula.css' rel='stylesheet' type='text/css' /> ...

  5. spring boot(十):定时任务

    springboot默认已经帮我们实行了,只需要添加相应的注解就可以实现. 1.pom包配置 <dependency> <groupId>org.springframework ...

  6. pip 报错

    pip 安装 初始化系统 安装PiP 问题? 依赖包:yun install wget gcc gcc-c++ -y python 环境 wget http://www.python.org/ftp/ ...

  7. 在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。

    在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码,如下代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any addition ...

  8. ubuntu 下 teamview 取消自动启动 autostart

    sudo teamviewer daemon disable

  9. Lucas卢卡斯定理

    当$p$为素数时 $$C_n^m\equiv C_{n/p}^{m/p}*C_{n\%p}^{m\%p}(mod\ p)$$ 设$n=s*p+q,m\equiv t*p+r(q,r<=p)$ 我 ...

  10. vs2010补丁

    背景 我都不知道这是干啥的了.想起.net真是一把鼻涕一把泪.搞了这么久.net,也被它坑了好多.有这时间搞搞开源东西多好.看见下面还有tfs,想起当时有个java同事竟然用vss管理java代码,后 ...