登录界面+验证码

做一个登录界面+验证码的界面

实现效果:


第一部分、 页面:

<div class="container" ><h2 style="text-align:center">会员登录 </h2><br><form action="<%=path %>/user/login" method="post" role="form" class="form-horizontal" οnsubmit="return on_submit()" ><div class="form-group"><label class="col-md-4 control-label" style="text-align:right">登录名称</label><div class="col-md-4"><input name="user.userName" id="userName" value="${user.userName}" type="text" class="form-control" placeholder="请输入账号"></div><div class="col-md-4"><label class="error" id="userEr"><c:if test="${er==4 }">用户名不存在</c:if></label></div></div><div class="form-group"><label class="col-md-4 control-label" style="text-align:right">登录密码</label><div class="col-md-4"><input name="user.pswd" id="pswd" value="${user.pswd }" type="password" class="form-control" placeholder="请输入密码"></div><div class="col-md-4"><label class="error" id="pswdEr"><c:if test="${er==5 }">密码错误</c:if></label></div></div><div class="form-group"><label class="col-md-4 control-label" style="text-align:right">验  证  码</label><div class="col-md-2"><input name="vali" id="loginCode" type="text" class="form-control" placeholder="请输入验证码"></div><div class="col-md-2"><img id='imgVcode' src=" <%=path %>/user/checkCode " title="点击图片切换" style="cursor: pointer;" /></div><div class="col-md-4"><label class="error" id="codeEr"><c:if test="${er==3 }">验证码错误</c:if></label></div></div><div class="form-group"><div class="col-md-3 col-md-offset-4"><a href="javascript:void(0);" id="checkCode">看不清楚,换一张</a></div></div><div class="form-group"><div class="col-md-2 col-md-offset-4"><input type="submit" class="btn btn-primary btn-block" value="登录" />	</div><div class="col-md-2"><a class="btn btn-default btn-block" href="">取消</a></div></div></form>
</div>

第二部分、jquery:

$(function(){//刷新验证码$("#checkCode").click(function(){$("#loginCode").val('');$("#imgVcode").attr("src", getContextPath()+"/user/checkCode?dt="+new Date().getTime());});$("#userName").keydown(function(){$("#userEr").html("");$("#pswdEr").html("");});$("#pswd").keydown(function(){$("#userEr").html("");$("#pswdEr").html("");});
});
function on_submit(){if($("#userName").val() == "") {$("#userEr").html("请输入用户名");//$("#userName").focus();return false;}else if($("#pswd").val() == "") {$("#pswdEr").html("请输入密码");//$("#pswd").focus();return false;}else if($("#loginCode").val() == "") {$("#codeEr").html("请输入验证码");//$("#loginCode").focus();return false;}
}

【重点在于刷新验证码,重新申请验证码】

第三部分、后台:

省略版:只写一个匹配验证码的,匹配账号面的就不写了

String checkCode =(String) session.get("checkCode");
if (checkCode==null || checkCode.equals("")) {return "login";
}
System.out.println("验证码:"+ checkCode +" "+vali);
if(!checkCode.equals(vali)){//没输验证码,验证码不匹配er = 3;return "login";
}
生成验证码图片的action

private InputStream imageStream;
public String execute(){//从 图片工具类 中生成图片Map<String,BufferedImage> map = ImageUtil.createImage();//获取验证码图片上的字符String key = map.keySet().iterator().next();session.put("checkCode", key);//   ← 这个是正确答案//获取  BufferedImage 对象BufferedImage image = map.get(key);//将      BufferedImage 赋值给    imageStreamByteArrayOutputStream bos = new ByteArrayOutputStream();JPEGImageEncoder imageEncoder = JPEGCodec.createJPEGEncoder(bos);//System.out.println("codeAction : " + key);try {imageEncoder.encode(image);byte[] imageBt = bos.toByteArray();imageStream = new ByteArrayInputStream(imageBt);return "success" ;} catch (Exception e) {e.printStackTrace();return "fail";}
}
public InputStream getImageStream() {return imageStream;
}
public void setImageStream(InputStream imageStream) {this.imageStream = imageStream;
}


第四部分、生成验证码的图片工具类

private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6","7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H","J","K","L","M","N","P"};
private static final int SIZE = 5;       //图像中 数字或字母   的个数
private static final int LINES = 7;      //图片中     线      的个数
private static final int WIDTH = 100;    //图像的宽度
private static final int HEIGHT = 35;    //图像的高度
private static final int FONT_SIZE = 30; //字体大小public static Map<String,BufferedImage> createImage() {StringBuffer sb = new StringBuffer();//字符串常量 ,要配对的 正确答案BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);//加载一张图片Graphics graphic = image.getGraphics(); //绘制图片graphic.setColor(Color.WHITE);     //底色graphic.fillRect(0, 0, WIDTH, HEIGHT);  //填充Random ran = new Random(); //随机函数//随机生成 SIZE个数字for(int i=1;i<=SIZE;i++){int r = ran.nextInt(chars.length);  //在数组长度范围内的随机一个数graphic.setColor(getRandomColor()); //随机 数字字母 颜色 graphic.setFont(new Font(null, Font.BOLD+Font.ITALIC, FONT_SIZE));graphic.drawString(chars[r],(i-1)*WIDTH/SIZE , HEIGHT/3*2);sb.append(chars[r]);// Session}//随机在图片上画线for(int i=1;i<=LINES;i++){graphic.setColor(getRandomColor());//随机 线 的颜色graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT), ran.nextInt(WIDTH),ran.nextInt(HEIGHT));//随机画线}Map<String,BufferedImage> map = new HashMap<String,BufferedImage>();map.put(sb.toString(), image);return map;
}
//生成随机颜色
public static Color getRandomColor(){Random ran = new Random();Color color = new Color(ran.nextInt(156),ran.nextInt(156),ran.nextInt(156));return color;
}









本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tp6框架使用think-captcha时验证码总是错误,调用captcha_check验证失败

tp6框架使用think-captcha时验证码总是错误&#xff0c;调用captcha_check验证失败 用session(‘captcha’)查看值是空的&#xff0c;遇到这种情况&#xff0c;解决如下&#xff1a; 1、打开app/middleware.php文件 2、将\think\middleware\SessionInit::class,注释去掉

【兄弟反目成仇系列】:我只是写了一个爆炸信息窗口脚本,好兄弟追了我几条街~

文章目录 ✨ 真的来咯~&#x1f4a5;爆炸信息窗口&#x1f4a1;设计思路&#x1f511;模块准备 ⚠️删除好友警告⚠️源代码 ❓这时你可能会问&#x1f440; 批量获取表情包 &#x1f6c0;结束语 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析…

微软报告:GPT-4可以算早期AGI/ 百图生科发布AI生成蛋白质平台/ Arm寻求上调芯片设计价格…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好&#xff0c;今天是3月24日星期五。这周依然是技术炸炸炸的一周。 更多新鲜事&#xff0c;咱们一起来看~ 微软发布长篇报告&#xff1a;GPT-4已经可以算早期AGI 微软最新发布的154页长篇实验报告称&#xff1a;GPT-4已经可以被…

自媒体文案伪原创文章生成器软件

如何编写文案&#xff0c;不管是我们的博客、自媒体还是企业网站&#xff0c;想要获得关注和收录需要我们具有高度原创、吸引用户点击和满足搜索引擎规则的文案。 我们现在有很多从事文案工作的职位&#xff0c;看似不起眼但是网上各种爆文和热门短视频背后都离不开我们文案的支…

013利用脑电信号自动检测和诊断癫痫发作的深度卷积神经网络-2017(800引用)

Deep convolutional neural network for the automated detection and diagnosis of seizure using EEG signals ABSTRACT 脑电图(EEG)是一种常用的辅助测试&#xff0c;有助于癫痫的诊断。EEG信号包含关于大脑电活动的信息。传统上&#xff0c;神经学家采用直接视觉检查来识…

运动想象脑电信号数据集及其预处理方法

脑电信号基础知识 在BCI应用中,获取脑信号的途径包括多种技术方式。其中,EEG是最适合脑机接口应用的技术,主要因为无创性、便携式和高时间分辨率是其的优势。EEG是记录头部表面不同位置之间电位差异的时间记录,它起源于分布在大脑皮层的数百万个神经元的同步电活动的总和。…

EEG- gan:用于脑电图(EEG)大脑信号的生成对抗网络2018

EEG-GAN: Generative adversarial networks for electroencephalograhic (EEG) brain signals Abstract 生成对抗网络(GANs)最近在涉及图像的生成应用中非常成功&#xff0c;并开始应用于时间序列数据。在这里&#xff0c;我们将EEG- gan描述为生成脑电图(EEG)大脑信号的框架…

【汇编】二、预备知识(一只 Assember 的成长史)

嗨~你好呀&#xff01; 我是一名初二学生&#xff0c;热爱计算机&#xff0c;码龄两年。最近开始学习汇编&#xff0c;希望通过 Blog 的形式记录下自己的学习过程&#xff0c;也和更多人分享。 这篇文章主要讲述学习汇编所需的基础知识。 话不多说~我们开始吧&#xff01; 目…

聊天记录误删了有办法找回吗?微信聊天记录误删怎么恢复

今天小编想要找回一篇发过给好友的重要文档&#xff0c;结果发现&#xff0c;该文档已被删除…这么重要的东西&#xff0c;都不记得什么时候删除了&#xff0c;头都大了&#xff0c;着急想找回文档的我&#xff0c;脑子里一直悬浮着&#xff1a;聊天记录误删了有办法找回吗&…

微信聊天记录删了如何找回

微信聊天记录删了如何找回&#xff1f;微信聊天记录删除&#xff0c;怎么恢复&#xff1f;这是最近被问最多的问题&#xff0c;今天就来跟大家讲讲怎么恢复微信聊天记录。&#xff08;任何数据恢复都不能百分百&#xff0c;所以大家最好的办法还是把比较重要的聊天记录备份一下…

转:你的领导激情在哪里?发现它并为之而奋斗

个人理解&#xff1a; 激情&#xff0c;自省&#xff0c;经历 学会接受别人 激情和使命感 让大家的眼睛瞄准最终的结果 你的领导激情在哪里&#xff1f;发现它并为之而奋斗 你的领导激情在哪里&#xff1f;发现它并为之而奋斗 一个人仅凭空想象是很难找到自己的激情的。要找…

加班到十点,领导警告你不够努力啊!我TMD。。。

又到了一周总结的时刻最近因为搬家&#xff0c;导致好两周没总结了&#xff0c;人要是懒惰下来&#xff0c;再起来真的好艰难啊。 加班到十点&#xff0c;被警告不够努力 事情是这样子的&#xff0c;同事跟我说&#xff0c;楼上的部门最近裁员&#xff0c;大概裁员20%&#xff…

领导给你安排任务,这三种话,越早说越好

这年头都讲究执行力&#xff0c; 领导请来管理大师给员工一通培训&#xff0c; 执行力是上去了。 领导布置工作&#xff0c;员工都嗷嗷的上去干。 可是事情都干差了、干坏了、干偏了&#xff0c; 这算是执行力好吗&#xff1f;一点不算。 错误的方向&#xff0c;加上牛逼…

跟领导汇报工作时,这句话建议你不要说

&#xff3b; 爱开发&#xff3d;陪伴你一起成长&#xff0c;一起进步 跟领导汇报工作时&#xff0c;这三个字&#xff0c;建议你不要说 文 | 洪生鹏 跟领导汇报工作时&#xff0c;要是有某项工作那里做得不好&#xff0c;被领导指出时&#xff0c;有的人喜欢用“我以为”来答复…

领导总是喜欢在快下班时开会,一开就是一两个小时,好烦啊

张工是一名程序员&#xff0c;在一家互联网公司上班&#xff0c;最近部门来了一位新领导&#xff0c;总喜欢在快下班的时候开会&#xff0c;而且一开就是一两个小时&#xff0c;有重要事开会还说得过去&#xff0c;可有的会议始终是太无聊了&#xff0c;张工始终想不明白为何新…

请别把加班说的那么“高大上”

请别把加班说得那么“高大上” 【本期观点】IT行业加班&#xff0c;到底有没有价值&#xff1f; 【导语】众所周知&#xff0c;说到 IT 行业&#xff0c;大家的第一印象都是「加班严重」 不得不说&#xff0c;加班确实是 IT 行业潜规则了&#xff0c;IT 行业也被冠以「月…

熬夜加班做出的报表被领导吐槽太丑?那是你没用这个

五一刚结束&#xff0c;一个在旅游运营部门上班的朋友向我诉苦&#xff0c;今年的旅游业虽然因为疫情增长有所放缓&#xff0c;但并不影响五一旅游黄金期结束后他要做报表&#xff0c;领导现在除了关注疫情和行业发展&#xff0c;就是在不断的精细化企业管理&#xff0c;像以前…

升职加薪,领导看的从来都不是谁更“努力”

许多程序员都认为&#xff0c;只要我足够努力&#xff0c;在职场中就一定能升职加薪。 但现实却是&#xff1a; 你为了项目进度经常加班到深夜&#xff0c;领导却对你视而不见&#xff1b;开会的时候&#xff0c;明明你的想法更有可行性但总是不被看好&#xff1b;无论什么工作…

深夜加班,我该怎么向领导邀功

Jenkins进阶&#xff1a;钉钉机器人和打包下载【再也不背发布的锅啦~】 职场小技巧应用场景场景小问题 jenkins配置钉钉又来新消息啦~~jenkins集成钉钉配置 谁打包没拉代码&#xff01;&#xff01;jenkins打包下载配置 职场小技巧 最近每次下班后悟空总是溜出去吃饭&#xff0…

同时进公司,准时上下班,从不加班加点的他,在我这个加班狂魔前升职了......

前言 我最近心态很崩。 和我同期一道进公司的同事又升了一级&#xff0c;可是明明大家在进公司时&#xff0c;同事不论是学历还是工作经验&#xff0c;样样都不如自己&#xff0c;眼下不过短短的两年时间便一跃在自己的职级之上&#xff0c;这着实让我有几分不甘心。 我想不…