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

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. ruby where用法

    用法1 Subject.where(").order("name") 用法2 与find方法不同的是,where方法返回的结果不是数组而是ActiveRelation,这 ...

  2. ChunkDisappearImage-一个以矩形为单位的图片消失分解效果

    效果 使用 1.将ChunkDisappearImage挂在一个空GameObject上. 2.将ChunkDisappearImage的Material设为ChunkDisappearImageMa ...

  3. Spring 学习04

    一.上节内容回顾 1 基于aspectj的注解aop操作 2 spring的jdbcTemplate操作 (1)实现crud操作 - 添加.修改.删除update方法 - 查询 -- 查询某个值 qu ...

  4. C# 摇奖机实例(线程)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. Java EE之Hibernate异常总结【3】Disabling contextual LOB creation as createClob() method threw error java.lang.reflect.InvocationTargetException

    参考文献:https://stackoverflow.com/questions/4588755/disabling-contextual-lob-creation-as-createclob-met ...

  6. luogu P2662 牛场围栏

    传送门 因为一个木板可以切掉最多\(m\),所以可以先预处理哪些长度的木板可用,开个桶,然后对\([l-m,l]\)打标记,再把打了标记的数取出来 假设可用长度\(a_1,a_2,,,a_n\)从小到 ...

  7. 使用Jupyter lab前应该读的几篇文章

    知乎上的一篇文章: 如何优雅的使用Jupyter? Jupyter Lab原来还有如下使用方式: 执行Shell命令 Hintland(提示命令).snippets(插入代码段).一键美化代码等功能( ...

  8. RAC

    RAC (Oracle网格计算技术) 编辑 Oracle RAC是Oracle Real Application Cluster的简写,官方中文文档一般翻译为“真正应用集群”,它一般有两台或者两台以上 ...

  9. SVM实例及Matlab代码

    ******************************************************** ***数据集下载地址 :http://pan.baidu.com/s/1geb8CQf ...

  10. Linux搜索查找类指令

    ⒈find [搜索范围] [选项] find指令将从指定目录下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端 选项说明: 选项 功能 -name<查询方式> 按照指定的文件名查 ...