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

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. 虚拟机下安装ubuntu后root密码登录失败的问题

    问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会输入一个自己的网名或绰号之类的,密码也在这时设置过了. 但是当安装成功之后,使用命令#su root,然后输入刚才设置的密码, ...

  2. JAVA记录-SpringMVC scope属性的两种模式

    singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只 ...

  3. 【JUC】CopyOnWriteArrayList

    写入时复制(CopyOnWrite) 什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进 ...

  4. Winform程序双向绑定

    程序比较简单,一看就明白,主要需要实现INotifyPropertyChanged using System; using System.Collections.Generic; using Syst ...

  5. C# dll 在注册表中寻找

    “{7713F78A-44DE-42BA-A1F6-3FB0BD6CA63B}”就是该Dll的唯一ID啦,每一个Dll文件都会不一样的. 但是,问题又来了,怎么样知道它的唯一ID呢?其实很简单,那就是 ...

  6. eclipse2019-03设置代码编辑区背景为图片

    一.我的主题设置如下所示 二.找到如下所示或类似的文件夹 三.在该文件夹里的images文件夹里添加图片 四.在CSS目录下的e4-dark_win.css文件中添加如下代码 .MPart Style ...

  7. img格式镜像转ISO格式

    在做汇编学习时,需要用比较老的Windows XP来进行调试学习,因此找了最老的Windows XP(CN_WINXP_PRO_ISO,无SP版本 ),下载后发现镜像文件格式是img的,而virtua ...

  8. jquery 学习(七) - 常用动态效果

    <!--转载于 听说你的代码很6--><!--http://www.jq22.com/webqd2377--> CSS <style> #content #firs ...

  9. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...

  10. 「About Blockchain(一)」达沃斯年会上的区块链

    「About Blockchain(一)」 --达沃斯年会上的区块链 写在前面:1月23日到26日,在瑞士达沃斯召开了第48届世界经济论坛.这个新闻本没有引起我格外的关注,直到前两天张老师分享给我一篇 ...