java登录代码带验证码实现_两种方法实现带验证码的用户登录
带验证码的登录效果图
登录成功时,记录用户名和访问次数
登录失败,弹出错误提示
方法一:应用request对象获取表单数据实现登录操作
代码结构:
index.jsp源码及详解:
当表单被提交时,数据会被提交到check.jsp中去,此处表单的提交实在js的mycheck()方法中完成的。
Stringintsum=intmethod+""+intmethod2+intmethod3+intmethod4;此处+""是为了将int数据类型转为String类型。
登录页面
functionmycheck(){//定义mycheck()方法
if(form1.UserName.value==""){
alert("用户名不能为空!");
form1.UserName.focus();return;
}if(form1.PWD.value==""){
alert("密码不能为空!");
form1.PWD.focus();return;
}if(form1.yanzheng.value==""){
alert("验证码不能为空!");
form1.yanzheng.focus();return;
}
form1.submit();
}
用户名:
密 码:
验证码:
//获取0~9的随机数intintmethod=(int)((((Math.random())*11))-1);intintmethod2=(int)((((Math.random())*11))-1);intintmethod3=(int)((((Math.random())*11))-1);intintmethod4=(int)((((Math.random())*11))-1);//加入""是为了让int类型转为String类型。//int类型和字符串类型相加,为字符串类型.Stringintsum=intmethod+""+intmethod2+intmethod3+intmethod4;%>
">
.gif">
.gif">
.gif">
.gif">
check.jsp源码及详解:
此处有两种页面的跳转方式
jsp中:response.sendRedirect("main.jsp");
js中:window.location.href='index.jsp';
使用requst.getParameter("name值")获取表单提交的数据
使用session.setAttribute("name", name),是将name保存到session范围内“name”变量中。
使用session.getAttribute("name")是从name中取出之前保存的数据。
response.sendRedirect("目标路径");实现页面的跳转。
//设置编码方式,防止中文乱码
request.setCharacterEncoding("UTF-8");//使用requst.getParameter("")获取表单提交的数据Stringname=request.getParameter("UserName");Stringpassword=request.getParameter("PWD");Stringyanzheng=request.getParameter("yanzheng");Stringmessage;if(!yanzheng.equals(request.getParameter("vcode"))){
message="验证码输入有误";
}else if(name.equals("mr")&&password.equals("123456")){
message="登录成功";//将name保存到session范围内“name”变量中,使用get方法可获取name
session.setAttribute("name", name);//成功页面跳转
response.sendRedirect("main.jsp");
}else{
message="用户名或密码错误!";
}%>
window.location.href='index.jsp';
验证中...
main.jsp的源码及详解:
巧妙使用session.setAttribute()和session.getAttribute()实现页面计数。
session.getAttribute("name").toString():由于get方法返回的是Object类型,将其赋值给String类型需要进行强制类型转换或调用toString()方法。
登录成功!
number=1;
}else{
number=Integer.parseInt(session.getAttribute("number").toString());
number=number+1;
}
out.print("您是第"+number+"次访问");
session.setAttribute("number", number);%>
方法二:应用JavaBean获取表单数据实现登录操作
代码结构
javaBean代码:
JavaBean规范:
(1)JavaBean 类必须是一个公共类,并将其访问属性设置为 public ,如: public class user{ …}
(2)JavaBean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器,例如:public User() {…}
(3)一个javaBean类不应有公共实例变量,类变量都为private ,如: private int id;
( 4 )javaBean属性是具有getter/setter方法的成员变量。
packagecom.wgh;public classUserBean {private String name="";private String pwd="";private String yanzheng="";private String vcode="";publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicString getPwd() {returnpwd;
}public voidsetPwd(String pwd) {this.pwd =pwd;
}publicString getYanzheng() {returnyanzheng;
}public voidsetYanzheng(String yanzheng) {this.yanzheng =yanzheng;
}publicString getVcode() {returnvcode;
}public voidsetVcode(String vcode) {this.vcode =vcode;
}
}
index.jsp源码
当表单被提交时,数据会被提交到check.jsp中去,此处表单的提交实在js的mycheck()方法中完成的。
正在登录
functionmycheck(){if(form1.name.value==""){
alert("用户名不能为空!");
form1.name.focus();return;
}if(form1.pwd.value==""){
alert("密码不能为空!");
form1.PWD.focus();return;
}if(form1.yanzheng.value==""){
alert("验证码不能为空!");
form1.yanzheng.focus();return;
}
form1.submit();
}
用户名:
密 码:
验证码:
intintmethod=(int)((((Math.random())*11))-1);intintmethod2=(int)((((Math.random())*11))-1);intintmethod3=(int)((((Math.random())*11))-1);intintmethod4=(int)((((Math.random())*11))-1);Stringintsum=intmethod+""+intmethod2+intmethod3+intmethod4;%>
">
.gif">
.gif">
.gif">
.gif">
check.jsp源码
实例化javaBean对象,对象名为user
设置user对象的值,将表单中的数据写入javabean中去。使用property="*"要保证表单中各元素的name值与javabean中定义的属性名保持一致。
用户名与密码验证中...
Stringyanzheng=user.getYanzheng();Stringname=user.getName();Stringpwd=user.getPwd();Stringvcode=user.getVcode();Stringmessage;if(!yanzheng.equals(vcode)){
message="验证码输入有误!";
}else if(name.equals("mr")&&pwd.equals("123456")){
message="登陆成功";
session.setAttribute("name", user.getName());
response.sendRedirect("main.jsp");
}else{
message="用户名或密码错误!";
}%>
window.location.href('index.jsp');
main.jsp源码
登录成功!
number=1;
}else{
number=Integer.parseInt(session.getAttribute("number").toString());
number=number+1;
}
out.print("您是第"+number+"次访问");
session.setAttribute("number", number);%>
java登录代码带验证码实现_两种方法实现带验证码的用户登录相关推荐
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- [转]DES加密 java与.net可以相互加密解密两种方法
[转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...
- Java学习笔记:创建线程的两种方法
Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程
- 烽火HG680-KB_Hi3798MV310_当贝桌面_强刷及免拆_两种方法-卡刷固件包
烽火HG680-KB_Hi3798MV310_当贝桌面_强刷及免拆_两种方法-卡刷固件包-内有短接点及教程 特点: 1.适用于对应型号的电视盒子刷机: 2.开放原厂固件屏蔽的市场安装和u盘安装apk: ...
- java 隐藏标题栏_两种方法一句代码隐藏Activity的标题栏
把Activity的标题栏隐藏有两种方法.一种是在在Activity里面设置javacode.还有一种是在项目的清单文件AndroidManifest.xml中设置模版样式. 一.在Activity中 ...
- java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法
首先还是要了解框架JFrame中的层次结构.JFrame中的层次分布及相对关系是:最底层是:JRootPane:第二层是:JlayerPane:最上层就是ContentPane,也正是我们常说的内容面 ...
- easyui关闭dialog后刷新父页面_两种方法WordPress批量打开、关闭文章评论功能
WordPress没有一键打开和关闭已发表文章评论的功能.只是是否允许在新发表的文章发表评论,或者自动关闭发布多少天前的文章的评论功能.由于一些需要,我们需要关闭最初在网站上打开的WordPress文 ...
- java hashmap 去重_java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- android沉浸模式代码,Android沉浸式的两种方法
隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: 而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分. 怎么做呢,郭霖的一个Function搞 ...
最新文章
- 多伦多大学和清华大学创新创业论坛,数据科学研究院建言献策
- C#3.0扩展方法[转]
- Swift iOS : 内存管理
- Hive环境搭建启动报错
- C语言中scanf和printf格式化输入输出
- redhat7 配置xmanager登陆
- 打印机提示服务器状态未知,win7打印机提示rpc服务器不可用怎么办
- 失意时,要耐得住寂寞
- apollo决策规划学习--慢速障碍物超车
- 大三计算机组成原理深度学习——机器字长、存储单元、存储字长、存储容量,存储体的概念
- 8.称呼/no/not/meet/nice/of/倒装句/介绍他人的方式/see
- Pod状态异常排查问题集-pending状态排查思路
- 电脑艺术设计是否属计算机专业,电脑艺术设计属于计算机专业吗
- 安徽师范大学898专硕复习讲义
- 金融风控-贷款违约预测
- 我的2020年终总结
- 下载码是什么,下载码怎么用,下载码,下载码在哪,下载码完全使用手册,下载码在这,下载码下载
- 各大游戏公司面经笔试题汇总(资源来自网络)(实时更新)
- [Element Migrating][ElInput][Attribute]: icon is removed, use suffix-icon / prefix-icon instead.
- OpenGL之入门学习
热门文章
- oracle按相同年份_通过oracle建立Bsv的链上二元期权合约
- IPTV、数字电视和网络电视三者的区别与联系
- 年中必看!手把手教你职场晋升之道!
- tensorflow2读取数据P4: tf.data.TFRecordDataset创建Dataset
- 苹果闪照如何第二次查看_六款苹果已购游戏共享【博德之门1+2】【战地霸主+搏击长空】【阿尔托的冒险+奥德赛】IOS帐号分享...
- 清华邓志东:城市智能路网新基建催生路端世界级企业
- Mybatis特殊值Enum类型转换器-ValuedEnumTypeHandler
- js获取当前时间并转化格式
- 解决poi设置excel列宽精度丢失问题
- GitHub上排名前100的Android开源库(201603)