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

aaarticlea/png;base64,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" 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,iVBORw0KGgoAAAANSUhEUgAAAg4AAADjCAIAAABinAsbAAAgAElEQVR4nO2deXgc5Z3nW5Jly93tA2adLE+ygTDJZpJNyBJnhyRLmCDAQCDEVks2IZMDmE2ILTEEJG8YbJkkBF8h7GQmEyA+dV+WweBgAwNGJo5BlrGMsCzJumVZFrq61a0+q377R7XKpTrflrtVfXw/z+fRU1399nvU8X67uiS1ZZCNrq6u1tbWpqamhoaG35W93X9xtKltSLT0tYvdQ1MWbdLS0tLCi+lh0zL+/oHSr/145y0P/vvqn22+/+HigvUb84uK8x/bWFBY/HDRpvyi4oLC4oLC4vzHnsgvKi4oejK/qDi/cFN+4aaCwuK1RU8UFD1ZULghf/30+qLidUXFBYXF6wo35hcV5xcVFxRuyC8qzi/asG79hnVFxQ8XbSooLF63fkN+UXH++k0FhcXrijatKyouKNxQsH5T+CXrN+YXbVhX+MQj65/Kf2yj8JLpp8JNCysfXv9LoYcPPvyk46fbbvrR72/44d4vf3+HJSPDkpZhsaQL402zWIShp1nSdbYPAABEEWFOls7S/RdHf1f2dkNDQ1NTU2tra1dXF+PkL2CZm6i4POZskk3XMNaNRvqUKf2MUy69CYlvEqWfpoMNFRVSMyqUyCZHE2fzSOuJaVfjIS2UY5y7MJPOMoYzjqKAOf3U7oPOZozRWwTDRuOEOTjflU2YdlTrkJaWJjuW0tPD/UFUgDngco7+uJpT4pq0tAxlZqTge2qdgE/BrcGO/sZBVKiRbrGkp0XBiNuNSj3pkdQzq4k40n5eKjNz2+oMwZJuscyTdE+vn2kaRDosw2lFp0795rR6GKN+WiwWjc3F9qZec/+yHy2zqf9ytokMaSXKClmbiPL5rtzyGlspWvPJbAnfDZ25lVI2Ksz9aJ7lgnTW9USRaPUzuszF/tKZaBhfaLFYwsEYy3ey0n4adYYF3Q2bJtG4Eq2qTPuYRTUzJF0ykfj8XG4GKRsV+szZ3rrMhuKtn7E40PU/ZzcH/Qna8KmYEdHUHKdTUowQUiJNsVKjuClvwkxGvJhQfTauo8JqWxRN7Tar3Tb9cImGi6y2RVl20SWXo3Yr8han2411PUuVhXW3xuz6Kd/y4QK2pWHtS7Lsi7Iu7QulS3Van9nhpdZwhSouXLRYqs1urNW2SPy50GpPz8i0pGWkpaWlp6eLPzMyMqxWq91ut9vtVqs1I0NewJKWkZ6xIGuhMJBL2zzW/Qy3brFY0jIsaRkZ8+ZnLbRFvqNZju1FWXadc03cNbOuf4YsG0Sq3b7Ybl+8cKEtIyMzLS0jPX1eWlqGxZIuLGRkZGYttNnsSxdaF1ttS2z2qPXTaApSPadka/SOZ3FeiuhQUar5QWhaRnpGpvSYEY8xm31xXEeF5Y4XouSOme603L7bcvtey+2lEveKpl16iWpJLfcyW2q5fbfljp2XuhdBK6qNCrVND1Cv/G7LHTssd7xgufO56S2zM1r9TLtz57R/kiqprXRmbzX2l3R00nFd2h1s2+rWsGm3MGnJLjFcI5h+a5lsYcarbt1ruXVv2opSy+2llhUlc9jPvdNryizZJWm37k67fWdaeF/L9t1ey+17Z54gLIf6XqPdJ6tnb/h4u/M5aR/CW0b1EFpRmrai1HJbiVTGzaK6oaTbStgvllv2WG4rCTckH530PHpB44zQVm/+2alyCsw4B6c32opyzfpvKxOd9TYx3Fxax3ZcR4U1p2LhqnLrqlpbTo3dsc+WU2937Lfl1EfqwvBCnS2nxpZTszDnxYU59WEddQsddVmr9llX7hceWnNrratqbTl1dsc+m6PKnlttz62w51bZc6tsjkprToVMm6PSurrMnltly6mxrqq25lRYcyqtq6ptjipr7r6FOfVZq/YJNdsd+2w5dQtz6m05NdP9qbM79tkd+4W+LXJUCQ0tclTZcyRtraoN9zOnNtznnPqsnFrryhdtOfV2xz67o9aWUydun0WOKqEqm6NykaPKtkrsbaV1VbXdUSs0KrYbtX5qWmmdMZxqe261sENVnS5ZZnOUW3MqhcJC6/bcauuqasmOmFnzzP1iz6lc5KhanFst/BQeip2351YJJReuKmcYwmxUPWBi2U/17Ty9x/eJx6fNUW51lNgd+4X14cMgvGHLdJpQPR/Fs9Lu2GfLqbGuqpUMv8zuqLXnvCQ8ZXfUWnMqDTeLOFLxMBOONOlWWuSoYtzCMrNyKrNyqhc4qrNW7VvoqLOFj/wXF+bUW3P3WXNrhfNLOP7tOTW28I6osOdW2FbpNac9BdXZHfusOZVWR4nYZ/E0tOXU2x21M49qdRfklGc5Lm0We27Vorxqm6NSWJAeLVmOigU5UT6q4zoq5uVWz8urnJdbPX9Nxfw1FfPvLZu9ayrm31uWuaY0c3V5Zl7NvNzqjLzqzLy6zLyazNVV83Kr5+XWZq6umr+mSiw2f01F5uryeXmVQh/m5dYKL5SZmVcjqSTc4Xl5ldMN1WbkVWfk1YaL5dUIDWWurpx/b1nm6vLMNaXTLVYJtYk/RecLa1bXZOSFu5GZVxdufXWVdGjhPk93LCNPXlV4Y05vFskGiUI/2dXfWdJtOy+3ev6aKuEAEAYobze8d1T2i3RB+jDDEYUhsMhSeUz7OeP4X1Mx80iuDR8JayoyV5cLh41xK/rno3j45VVKdl+4sPrukyiMV7Y1YrT7pEd7uGbpqSScF9On/4xzXON4m6d9VIsDlw5NmGouPZtXeWkOMTpawjXkVi/Iq5kvWbj8zaJjXEfFMwf6IYQQmm68R0XnBQ+EEEITTYSoGPSImp6rc6N0yKkzcOWoIYRx4jPxHxXnBj2CzxzopxSgqWtSOurUGbhs1BDC+DEBoqLjvKfjvOeZA/1NXZNmz2ZzhJAW4sCJ6ETXVNJLROKoIYRxZQJERft5d/t5tzBjcnxKKEya4sC7RriTPd6kt2uEE0cNIYwrEyAq2gbcbQPhqAiE+FRQiApx4APj3KleX9I7MM6Jo4YQxpUJFhW+IJ8KyqJieJJO9/uS3uFJQlRAGJ8mQFSc7Z882z8pRIXHz2t4+rfZ25dlV76j/lC1sFLZy1kL/Lbx9G+zty/77emZ7WpVotOxsEJUiAMfdnEtA34db15bqr/m5rWlWjJWqFVMtR79h1oOuzhx1BDCuDIBoqK1b7K1LxwVkz5Ow9PbJHPxtvdmPFyWvX1Z9o5H5M9WNviUC9LaxIeqay6tD1e4vVKjjLKf+mU4ISrEgY9McmcGA/revLZUdVm/ZKRlZDHD/nKWRkcmOXHUEMK4MgGi4kzf5JnpqJiY4tQ8vTV7+7LsyiNTp7dmb9/67oyHy7Irj6gV01iQllS5GjiiXs/0yu2nJ5QrNevRVIgKceCjbu7shWC0vHltqepKfVkqUT5lWI/UUTcnjhpCGFcmQFR82Dv5YW84KsY8nJqnt2h+1HNpdn4zXExcUC2jWr96i1uOixVO92Fb5RaDek4bFeDGPOGoEAc+PkXtF4Na6szvWuV1amMpI3tW+lBcVl2p7/jUpVFDCOPKhIgK14e9LiEqPpoMqdn8dPb2ZdmVbxg8y7IglteMnDck1T597FLh6WWWSmRVyZ2OivDAx6fo3HCoa4Qz9Oa1pZdfRkwa/WdViylXisv67Z4bDk1HhQtCGG8mQFS09LhaesJRcdEV0rb5Nxoz8mszn/3NMWG58jWXckEsKSwr62cvw7JeXSEqxIGPuo1DQmc6NvxwSVmD9Kd+ouh3Q7VyLYUPoIRRQwjjygSIig96XB9MR4XuRHl6U/b2ZdmVBzTXiA+FBZVQOSB/lery6U3Z2ze9rVHJT593zGhFv051hagQB64TFRHFAMt8zRIVWgGjumzYH1lUCKOGEMaVCRAVp7tdp7vZo0IrAFiyRLlSZ4rXqO2nhxtnrpGGyvSyXk6IUSEOfOTyrirYyyivBrQ+X9KKJWUqsF+mjLg5cdQQwrgyAaKiucvZ3OWc1VWFVoHLvKrQTaYZUTEzLS5dcBjM5kJUiAMfmYwgJ1huRRiu11rWqUe/GEuGCb8sK4waQhhXJl9UGGaA/pWBxiyvXszwY6WZ4fTTw40Mnz4po2KYISpYJnedZ5XXBLJrBeXLde5Xa11V6DuMqIAwXk2AqDjV6TzVOeurCuWVhOEHUDqhol6/2sdKsvLSz6Z0smdGVIgDH5yIICcM0+JyPqQyvPLQ//Un/aYHJzhx1BDCuDIBouL9zon3OyeicVXBUkx/Hhee3fGQZg26Lco/m9JUiApx4D2jenN6RDefDe8t60SF8n51RHFl2HTPKCeOGkIYVyZAVJw8N3HyHEtUJI9CVIgD7xjmTe/SHNgxzIujhhDGlQkQFU3nJppSMirEgX8wmBJR8cEgL44aQhhXJkJUdEw0daRkVEwP/ERfSkTFiT5eHDWEMK5MgKg40TF+omM8BaNCHHhKRYUwaghhXJkAUdHYPt7YnopRIQ48paJCGDWEMK5MgKgQTbWogBDC+DHeo8L0iRtCCFNcRAWEEEIDEyAqIIQQmm68RwUBAAAwFUQFAAAAAxAVAAAADEBUAAAAMABRAQAAwABEBQAAAAMQFQAAAAxAVAAAADAAUQEAAMAARAUAAAADEBWpy8FDxyFMIM0+Y1IaREXqgnMPJBA4XM0FUZG64NwDCQQOV3NBVKQuOPdAAoHD1VwQFamL1rn3zB1X/r+7lm67Y8nG7Cu+v3zZHPcKAFUQFeaSJFFhsVhUl2VllERnKyYmqufef9xzxZ/uvfL5e6/8N8cVm7+95Oc3Lb7rur+Z+74BIANRYS7JHBWyJFAGA6JCtuaPdy3Zfe+V2769ZPNdSzbfdcVv7l5WdPOV/7h8iSndA0AKosJcEj4qlFcJ0p+ykoZrUgrlubf5JvuhP24YeHXb8R0/f/hbyx699ap1t137k/99hSndA0AKosJckiEqlD9VM8DwA6gLld+1fLfyQtS2bbyjPPf+9MOrvUNtzr/88fzrv2uu3tR9cOtYd1PlQ39rSvcAkIKoMJfkjIrZbQtExe+//4Wx9yqGT9ROnaqcOlU1fKJ2rKnyhQe+ZEr3AJCCqDCXZIsK1esG1fW4ua089z5749rKgq/6Tuzwtuz3tuyfer+8vvCrX7rpIVO6B4AURIW5JFtUkO61RcqmgirKc++Td7zR0ueufuKeqie+U/XEd6qfuOfomclPrnjTlO4BIAVRYS4pFBXICRmyc+/qu985MzBVNkCPttDP3qUHj9CP/kxPvk3HWqeuvvMvZnUSAAFEhbkkT1TIfgOKFNlg+OlTKt+ruDV3W+3x0HPNVPBX/qG3+H86zP/wJf57VXzuHu5fXqUnq/nslVtM7CoAiApzSfioEJDO+FpRYfjClI2Kkxv+bvjlX/z7rpd//Co9+Ge6/wD/gzr+e+W8Yxd3zx/5W56hXz37xuih4r8Wft7cDoNUBlFhLskZFexpkcqfSonnXvPGz4+99qt7f7L7qdc936+j+6r4NSW8YwefV0ord9Mv6n3f/mHZ+Bu/fu//fsHcDoNUBlFhLskZFYwvSeWcoJnnXtPjn73//qf/14/fuv8w/8C09x/m7z/Mf+bOlwr+6V9OFl/3QUmBib0FKQ6iwlySJCrALFCee9esfPnqb+259raaa1fUXXtr7advrrz6m7s/890DpnQPACmICnNBVKQuOPdAAoHD1VwQFakLzj2QQOBwNRdEReqCcw8kEDhczQVRkbqwfPE9hPGj2WdMSoOoAAAAYACiAgAAgAGICgAAAAYgKgAAABiAqEhdTL9LCWFEmn3GpDSIitQF5x5IIHC4mguiInXBuQcSCByu5oKoSF1w7oEEAoeruSAqUhf9c6//pRUXXrvv/MGVc9YfAHRAVJhLskUFyxdUaH0LXqqhc+711n7to3eL+OCgd6hh8NU1c9krAFRBVJhLwkeF1tegyr5CVSsYEBVKeutuHHnvF5znP31Df/D07p/sevn8K/fOcd8AkIGoMJdkiArVZZ1nZ/E9SEmJ1rk30rgp6DwYdP6Hp/f3ffu++dFfNrjb69v23jnH3QNACqLCXBI+KmSIlxFaT5F2VKTsd2tLGXj5bu/FA5y70tOVHxjb5Rt5afjIg56+33h7njv7wjfnvpMACCAqzCUZokIWD4aRgKgQ0Dr3XB1/CE6UTvUWenqLguMv+Aa3uj78Mj9V1vmv35rjHgIggqgwl2SLCllOSB+q3rpI5TvbWufe6MmtU/1Pec6tnOp+wNWyynX26/6+H/VV3t3w6+Vz3EMARBAV5pLwUSG7RFDe0BbXk9EHU6mG7NwbfDVv+GjhR+8+7jz7uPvcCl/X3f6+B7wDP/D3/WSgduWRjZ83q58AEKLCbBI+KgQMLw4QFUpk595wQyEf6HR35k+evSHQt/LCm//Yue8e1wfFAy/+4J1fX2dWJwEQQFSYS5JEhYjWvK/z0ZP4kpS9VzFw8J6x039wnd3i7VvrPPl3gb6c4XceemPLjf/5xJfOPfXVps1fMbefABCiwmySISoYb19rXXkgKi4c/l7I/dfJD+9xNl4b7FszcmztW9tuNLdvAMhAVJhLCkUF4QOomUiiYk1gonqi+XO+rtyhY+uObL3B3I4BoARRYS5JEhVasLwwSlsy8RDPvfN/Xh1wvuE7/4uhY4+9vfV6c3sFgCqICnNJhqgAs0M8907u/taZ3StOP3fTe3+4ydwuAaAFosJcEBWpC849kEDgcDUXREXqgnMPJBA4XM0FUZG64NwDCQQOV3NBVKQuLF98D2H8aPYZk9IgKgAAABiAqAAAAGAAogIAAIABiAoAAAAGICpSF9PvUiaQZu8rAEwGUZG6HDx0vKt/EBqKqAAAUZG6HDx0fGJyEhrKGBV+IuKI/Bz5KcRTkIhonDhfwEW+ELlpfJI6OP8Y+f3E+4gj3k3kIZog3zh5yO2hAY4uEE1NEE2QUNdokDr91E3kJi5IfJD4APFB4oNEHBEntMtLBCBGICpSl4OHjk96PNDQCKKCiAI+CgTDUcH7KMRRgHw8uWjcS0PEcRQg8vp4PxecIv8EkY8oRD4a99EgT04ichO5w1VOhmgoRCPEcxQi4rjpnEBUgLkGUZG6HDx03OP1QkOZo2KUaJS4UQq6eZ6CPFGAhIsLN3nPBwfGeCcFiJwUchPxHNGkPzhINE404vSd4egjLkQ8RzxP/KW5P0AcUYAoIEQDFxaxAOaW5IwK2b8Wj/Q/jUf6z8wTlIOHjnv9fmgoc1SMEI0QN0pBH3EU4sPzu9s74KcRJ01NEpGPaIooSMGAz+UedPm6QjTAUy9RP9Ekz5HbSRQkCnFERDxRiChA5FdEBQBzS8JHhepsrpzctb4wVfq1qVrBkMRR4Q8GoaGMURGkIFGQApwwrYdIuCxwEw26qHeUfE6i0CT5hsOXGgE/BYlcNOajC0Sj5PeHQsQHifwBCo4TBXgiChIFiELE87iQAGaS8FEhwPiFd1ovUa7U+ja9ZOLgoeOhEAcNZY4K4bY2XYoKmiJyE3HDE6ERogkizh2+qnBPkn+KPH4a5chHQQoFyRUKhSjgJfK7KTBK5AsJlQYpROQnCuGGBDCPhI8KWTCwT/Gzi4pk+v7tg4eOczwPDWWNCm7686IAEU88BUM0zhN1n6avfO7Zr6+oO32OGg7Q31/9zwsst3z2Uxv/69Iyi+WXP3/y9fbBkG+CKDB9iyIwRUE3ERckohARRz4iL3FCWoRUbmLLb3EDEHWSKir0P3dSfUprTYpEhdldSAzYo4LnwtcBwo1nP3HBINX8K31ifu0N/3DqTC+Rk7gLxLvJ46JH8mlBVn3VQXISeaeID5LT6Sd++uZEiIIcBUPk48hF5CLyTdctBgYRyW50IypAjEiqqCDF3QhZMdUFaRnVWxfJemcbUcEI44YK8eQP8ERTFPRMjQUpSG4fne+mry1r/ITl+OeuP9k7ScIFQihETS105VUvPvQojQZp2E/OEI15iOeIQjQ5QSEvTVykgJfcfhoL0FiAJjjyEPmInD4+SOTniCfy+XxEYkBxhKgAMSMZooJlNleNCmU2kNEHU8kEooIR1qggGneOcKELRKMUoqCbPH56LL/rnv/R+8XFp774jeZON3ndREHyB+nBdW9YFj3Tcp5GeXr0l3VLr3n4TDfxPhrqpS9f/0Tu6tqQm1pO0ceueTz9ivUWy8/vX/tu13A4LfxEbj/HEwUCAT78p3mX/tICUQFiQcJHhYj+dQPjVYXqeq2ViQ6ighHGDcUT8TTl8Z/huFbixzgfvdNICzIfadpPt1z3+j/kfvBuP/E+GuuioW762FW7bnYcvsDTBNHr73ksmY+UVNHEeXrzAFmveHxnBfW206eueqzwlxcGp+jFg5S+YPMrR1yjQfIS+YgmPH4hEvy+KUQFmAOSJCpkFxbKSV9500L/xobymkMog3sVKQjjhpr0uHnyEQ0RDVOQIy/9rKD5vjXtdIGyr3v5qq+8fM5PngkiJ722jz62bH/Zy3RRuA/B0/Vf//N99/kCF6nw//TZrny6bYC8LvK66PXjlPXx5yyW2sWL9+yuHhjyhS8sJn0hIRK40PS/+uARFSCGJHxUyGZzrbvcyklf/16F8ilhAVGRgrBfVXDCXz/4yNdPh8vov1116OVaoh76xqfe+2L24AcTNH6RyEX//OCkxfJs7xBdcJOXaMJHGzfwVy19+8Tr9NXPvZV77zsjHmo6RZ+6ZvOVn3jq1bfo1YNkXbCjpH74I46cRF6iqfAv4xIRR3yQKDB9YYGoADEh4aNCRD8J8AGUEkQFI8xRwbk9Xp4n8hMN0q8KzlgsW//200eutVQts1RY/uaw5ZN/Gh8mmqRvXH9k+f98a/QjCvHkDo37eeo+Q0st++/4WsA+r3rH7pDLT3vLafEVT5WUknOcaktoUVZJ5YEJJ9EoRx4iP5Gfo2AwSCT5N4KIChAzkiEqdH5tSRkYhmW0Kk8+EBWMMG8on9fvDnE0NuwnD9EUjRK1DhIN03duOPKZ7ON/GaKQny58SB9fVPKzHwfH+4mCxNFFp2fK2Uvf/cYHWZbX/8uSl84PkMdLr71NWdZ/+/UG8l2kz1/Vsmxx3fNlAxNE4xSOCm+QD4VCiAowNyRDVIDZgahghHFDcfyU8N84Aj6OpohCNMS7XEShEfrOTc//95ueO+uhUIg6Tgau+fi2jUUjQpwEuQtERE56dhMttteudLQE/TTloTEX5T/c+emrtiywPLrpEfrCtc9vfvZN4Z/OCn9gEQhnwvS/m0VUgFiCqEhdEBWMMG8oyT/y44h4Cgp/cR0kCpCXJw8RzxOFKBSgUIAoSOND48QFyU/eMdr8dHDZtb96oexiSLj1ECB/kHxB8gWJ95H4HRghlf/wgf8hCGIOoiJ1QVQwEsMNxRFNEXnI66Ibb9lnyfr2gJv4UPhvsnkiH5EvXC6AMAAmgqhIXRAVjMRoQ/l8Ux6niwJ04sjQ1Z/YkL7wsZJX3BOkFRU+RAUwEURF6nLw0HHIaGz2AEc8kTtEXvJO0kcu+oij7nHVqAgiKoC5ICoAAAAYgKgAAABgAKICAACAAYgKAAAABiAqAAAAGICoAAAAYACiArCh/EdYWv8aS7ZetZjFovnyy+yV6rNCc1JZKol0veypy9k+EWFYA+NWilZbWptadVnr8GBswrAq9p4DXRAVgBnxzFRVVkz2Ep0KtZ4ybIi0w0CnM6rt6k9YOp3RaY6xIdU1LGM37H+0njUcu04PdfaXVuuG+1RWUnmMsb8h0N+qQAKiAswW/TmONKZpw0rYG531G9JI22KfanXSVLle2iXZGp3KZWNhSdNZFGDciarPsuwjxqxVfa1h07Kf+s0hKthAVIDIYTnVZScqac8akTattaBTm+F0GWkx/ddqFVMNFZ2h6SxrdUP/JYwFdGDZlYx7RKewfq+0Np1qYOj3BFHBDKICsKH6blRZRnW9Tp1a5VmmGNWUUn3PqBMwjJGg/9ZbtXuGK3VeG1FbWt1mmTFZdpbhNmRZ1spRnaNIZ/iyMspG9XNavyRQA1EBmNE5h9lPb9UKtdoyXM84bV3mFM++rNqc/gtnNwUrH+qsl/ZK+ZRhLEl3k1YO6R8GLKOW1qM/IvaMZBkaooINRAVgRuf0Vj7U+qlVUvkU4xSmU7OyCZYhaE3ZjPOOTlUsc7FWZ1T7bNglacmIYNkIsnEpe2hYg1Zt+jVo1SOrgTFgABuICsCMdPrQmZsYpwCdSVB1jbKArAn9Wdiwz6rDNOytViap1qNfic7mNeyzzlgY40SnErEew/IsUaG1oNX0LNaoHnU6LQIGEBWAGa2TTTnHkdrpGt2o0O+hbI3hfMEyx7FP39L1LHmj0zedlxjO3YbTt86IWHKIpUKtIVx+VOjsCNXtr7V5kRxsICoAMzpve5XFtGJDVpXWGp0TWOdUZ4wKrT7LqmWZslnqYXmhspMRtauDYQoavopxWWvaVb4k0ncJjNXqP4WouDwQFYAZrbecWlFBRietsn6tOlXrn/Uso1UhI+wxplzQylfV8ozLhr3Vfw/OPhDDZf05nXE7s+9ErQpVM4x97EANRAVghvF9mWpUaMWMVhOkPcepTg2qZaShol9Gvx6dTqo+pb9NtEaqU7msMxFNdhENQXXU7DtCtTZli/pVqZZk6cwsjjHADKICAACAAYgKAAAABiAqAAAAGICoAAAAYACiAgAAgAGICgAAAAYgKgAAABiAqAAAAGAAogIAAIABiAoAAAAGICoAAAAYkABRASGE0HTjOipOtA1BCCE0XUQFhBBCAxEVEEIIDURUQAghNBBRASGE0EBEBYQQQgMRFRBCCA1EVEAIITQQUQEhhNBARAWEEEIDERUQQggNRFRACCE0EFEBIYTQQEQFhBBCAxEVEEIIDURUQAghNBBRASGE0EBEBYQQQgMRFRBCCA1EVEAIITQwfqPi3TPO0tcuQgghjAfjMSoON451D01BCCGMH02Oii173hweHc3+s7IAAARXSURBVJVe7JxsuwAhhDCulM7Sw6OjW/a8iaiAEEI4Q0QFhBBCAxEVEEIIDURUQAghNBBRASGE0EBEBYQQQgMRFRBCCA1EVEAIZ2N7e/u7yUh7ezuGrBRRASGM2Pb29oaGBkpGGhoaVKfOFByyVEQFhDBihUnTm4wIUyeGLBNRASGM2Pr6eiJyJyNEVF9fjyHLRFRACCO2rq6OiCaTESKqq6vDkGUiKiCEEVtTUxPTeXP58uWzfvYyIaKamhpThiyiulJGFJvWGrJURAWEMGKrqqqiOG8qZ0DDOTF2aUFEVVVVsR7ypCIGtMpIF2QPo4XWkKUiKiCEEVtRUUFErqiyfPly2YJspT7R6gYRVVRUzM2QRbT6PwfjdWkPWSqiAkIYseXl5bGLCtU1+pNjdKOivLw81kOeRfJFNx6kaA1ZKqICQhixpaWl0Y0KWSrE7h20IURUWlo690NWLs/lhZTqkKUiKiCEEbtnz56oz5vi9Cf9KX04Z/Pmnj175nLIjGOJ6VWF6pClIioghBG7e/duInJGCWF+FBbEh1JUXxKt1mUQ0e7du2M9ZOfMIWgtO9W2RtTHrjVkqYgKCGHE7ty5MxbzpvKnU2MajWlU7Ny5c26GrIWsmPKFUeyGU3vIUhEVEMKIFebN9uixfPly6U8ZsmLKMlHsiX5URLEhKTpDUD4V3fG2aw9ZKqICQhixu3btIqJz0UOc9IVl8ad0QWtldCGiXbt2zeWQlciKaS1EC60hS0VUQAgjVrjHG8XZShkSWlOk7Nmoo39bO0aN6gxnbqICt7UhhNG3pKSEiDpjwPLly2UPhTXS9arvxKPVASIqKSmJ9ZB1LimkQzYsExW0hiwVUQEhjFjhjwy6khH9v6swu3cxAX9XASGMiWVlZUTUnYwQUVlZGYYsE1EBIYzYhoYGr9c7kYx4vV6trzZKtSFLRVRACCO2vb1dmDqTD/0vTDW7dzEBX5gKIYyV7e3t7yQjOpNmCg5ZFFEBIYTQQEQFhBBCAxEVEEIIDURUQAghNBBRASGE0EBEBYQQQgPNiYqzZ8++//77R48eRVRACGH8q4yKo0ePvv/++2fPno1VVHR3d7e1tTU3Nx87dmzLnjdLX3lveHRUtP8ihBDC+FI6S5e+8t6WPW8eO3asubm5ra2tu7s7JlHR09PT0dHR0tLS2NgoXFhI/V3Z2xBCCONK2UR99OjRxsbGlpaWjo6Onp6emERFb29vZ2dna2vrqVOnGhsbjx071gAAACBBOHbsWGNj46lTp1pbWzs7O3t7e2MSFf39/T09PefOnWttbW1paWlubm4CAACQIDQ3N7e0tLS2tp47d66np6e/vz8mUTEwMNDX19fT09PZ2dnR0dHW1tYKAAAgQWhra+vo6Ojs7Ozp6enr6xsYGIhJVAAAAEhZEBUAAAAMQFQAAAAwAFEBAADAAEQFAAAAAxAVAAAADEBUAAAAMABRAQAAwABEBQAAAAP+P49s3Y3g18kJAAAAAElFTkSuQmCC" 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. WebSocket实战之——JavaScript例子

    一.详细代码案例 详细解读一个简单html5 WebSocket的Js实例教程,附带完整的javascript websocket实例源码,以及实例代码效果演示页面,并对本实例的核心代码进行了深入解读 ...

  2. EventKey为last_trade_no的subscribe关注事件

    如果用户曾经在该公众号有支付行为,关注的时候EventKey中将包含上次交易订单号,如 last_trade_no_4002752001201704258347703919 <xml> & ...

  3. 淘淘商城之springmvc前端控制器

    一.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

  4. u-boot移植(十三)---代码修改---裁剪及环境变量 一

    一.内核裁剪 内核的裁剪首先就是修改我们的配置文件,即 include/configs/jz2440.h 文件,里面定义的很多宏,我们也许用不上的就要去掉. /* * (C) Copyright 20 ...

  5. 20155334 2016-2017-2 《Java程序设计》第九周学习总结

    20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...

  6. shiroWeb项目-登陆与退出实现(九)

    原理 使用FormAuthenticationFilter过虑器实现 ,原理如下: 将用户没有认证时,请求loginurl进行认证,用户身份和用户密码提交数据到loginurl FormAuthent ...

  7. Node 7.6默认支持Async/Await

    Node.js 7.6正式默认支持async/await功能,并能够使低内存设备获得更出色的性能. Node 7.6对async/await的支持来自于将V8(Chromium JavaScript引 ...

  8. xpath与nodejs解析xml

    测试xpath的工具 http://www.freeformatter.com/xpath-tester.html#ad-output http://www.xpathtester.com/test ...

  9. Python3学习笔记23-StringIO和BytesIO

    StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即 ...

  10. apache httpd.conf

    Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...