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

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,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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. vue切换路由页面内容没有重载

    项目中遇到这样一个问题: 在一个地方填了一个申请的表单,需要在另一个页面的列表上显示出来这条申请的数据,但是由于vue的缓存,在切换路由时列表上并没有及时更新数据,解决方法如下: vue路由切换时页面 ...

  2. 在 chrome 上导出 pdf

    用html+css写出网页,然后在chrome上导出pdf 1. command + p:快捷呼出打印: 2. “目标打印机”:选择“更改”,之后选择“另存为PDF”: 3. 点“更多设置”,可以勾选 ...

  3. 解决logstash启动缓慢问题

    在部署logstash时,头几次启动时长还可以,最后高达半小时以上启动启动不了,上网查资料说,系统的“熵”过低,导致jruby启动缓慢.需要安装haveged.但是我安装完后还是慢 https://h ...

  4. Centos7下编译CDH版本hadoop源码支持Snappy压缩

    1 下载snappy包并编译 wget https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz tar ...

  5. CF448C Painting Fence (贪心分治)

    题面 \(solution:\) 一道蛮水的分治题,但思想很不错(虽然我还是非常天真的以为是积木大赛原题,并且居然还有30分) 看到这个题目,根据贪心的一贯风格,我们肯定能想到将整个栅栏的下面某部分直 ...

  6. gtid_executed和gtid_purged变量是如何初始化的

    一.官方释义 1.1.gtid_executed.gtid_purged https://dev.mysql.com/doc/refman/5.7/en/replication-options-gti ...

  7. 手动创建binary log files和手动编辑binary log index file会有什么影响

    基本环境:官方社区版MySQL 5.7.19 一.了解Binary Log结构 1.1.High-Level Binary Log Structure and Contents • Binlog包括b ...

  8. Database学习 - mysql 数据库 外键

    外键 外键约束子表的含义:如果在父表中赵达不到候选键,则不允许在子表上进行insert/update 外键预约对父表的含义:在父表上进行update/delete以更新或删除子表中有一条或多条对应匹配 ...

  9. Adjoint of SE(3)

    以前看的书都提到 SE(3) 和 se(3) 的 Adjoint,但是并没有讲这个东西是干什么用的,只是给了一堆性质.这东西来自群论. 参考 Lie Groups for 2D and 3D Tran ...

  10. js sort方法根据数组中对象的某一个属性值进行排序

    sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...