Idea中maven项目实现登录验证码功能
作者:旧茶忆故人 发布时间:2023-11-29 16:50:51
标签:Idea,maven,登录,验证码
1、配置maven环境变量,将maven安装的bin⽬录添加到path路径中(此电脑->属性->高级系统设置->环境变量->)
路径为maven安装目录
2、找到ValidateCode.jar包的本地路径
3、制作Jar包
原jar包地址:链接: https://pan.baidu.com/s/1QpqiZaF_ZYhW1Qn3ifn2eg 提取码: uc47
无法直接使用,需要命令行制作,命令如下:
mvn install:install-file -DgroupId=it.source
-DartifactId=ValidateCode -Dversion=1.0
-Dpackaging=jar -Dfile=C:\Users\xiyang\Desktop\ValidateCode-1.0.jar
‘C:\Users\xiyang\Desktop\ValidateCode-1.0.jar'为jar包路径
4、成功效果
5、在maven项目的pom.xml文件中添加依赖
<dependency>
<groupId>cn.dsna.util.images</groupId>
<artifactId>ValidateCode</artifactId>
<version>1.0</version>
</dependency>
注意:‘cn.dsna.util.images'为依赖的路径,笔者是将jar包放在本地maven仓库的cn/dsna/util/images路径下
6、前端html实现
<!DOCTYPE html>
<html class="loginHtml" lang="cn" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>后台登录</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="icon" href="img/ico.ico" rel="external nofollow" >
<link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" media="all" />
<link rel="stylesheet" href="css/public.css" rel="external nofollow" media="all" />
</head>
<body class="loginBody">
<form class="layui-form" >
<div class="login_face"><img src="" class="userAvatar" style="width: 100%;height: 100%"></div>
<div class="layui-form-item input-item">
<label for="userName">用户名</label>
<input type="text" placeholder="请输入用户名" autocomplete="off" id="username" name="username" class="layui-input" lay-verify="required">
</div>
<div class="layui-form-item input-item">
<label for="password">密码</label>
<input type="password" placeholder="请输入密码" autocomplete="off" id="password" name="password" class="layui-input" lay-verify="required">
</div>
<div class="layui-form-item input-item" id="imgCode">
<label for="code">验证码</label>
<input type="text" placeholder="请输⼊验证码" autocomplete="off" id="code" name="code" class="layui-input">
<img src="http://localhost:8080/home/code" onclick="changeCode()" id="codeImg">
</div>
<div class="layui-form-item">
<button class="layui-btn layui-block" lay-filter="login" lay-submit>登录</button>
</div>
</form>
</body>
<script type="text/javascript" src="layui/layui.js"></script>
<script type="text/javascript" src="js/login.js"></script>
</html>
注意:页面是layui框架渲染的,layui官网: https://www.layui.com/
也可以在网盘中下载:链接: https://pan.baidu.com/s/1QpqiZaF_ZYhW1Qn3ifn2eg 提取码: uc47
7、前端js代码(login.js)
//点击验证码进⾏刷新验证码,(登陆失败以后,重新调⽤该⽅法去刷新验证码)
function changeCode(){
var img = document.getElementById("codeImg");
//注意:如果请求⽹址完全相同 则浏览器不会帮你刷新
//可以拼接当前时间 让每次请求的⽹址都不⼀样
img.src ="http://localhost:8080/home/code?time="+new Date().getTime();
}
8、后端java代码(控制层)
//获取验证码
@GetMapping("code")
public void getCode(HttpServletRequest request, HttpServletResponse response){
//参数列表:宽度,⾼度,字符数,⼲扰线数量
ValidateCode vs = new ValidateCode(120,40,5,100);
//获取文本
//String code = vs.getCode();
//将文本放入session中,一个公共的存储空间,存值的方式是key-value
try {
request.getSession().setAttribute("code",vs.getCode());
request.getSession().setMaxInactiveInterval(300);//永不过期为-1
vs.write(response.getOutputStream());
} catch (IOException e) {//有io流就可能有io流异常,就要加try catch语句
e.printStackTrace();
}
}
9、最终效果
点击验证码自动刷新
来源:https://segmentfault.com/a/1190000038695388


猜你喜欢
- C#中的泛型和反射经常是一起工作的,因此这里就一次性的加以介绍了。由于c#是强类型语言,一般来说函数的返回类型和参数的类型都是一早写好的,这
- 基本数据类型变量就是用来储存值而保留的内存位置。这就意味着当你创建一个变量时就会在内存中占用一定的空间。基于变量的数据类型,操作系统会进行内
- 参考资料:alibaba-easyexcel.github.io简介EasyExcel是一个基于Java的简单、省内存的读写Excel的开源
- 第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信TelephonyManager telManager = (Tele
- 本文实例讲述了C#实现为类和函数代码自动添加版权注释信息的方法,分享给大家供大家参考之用。具体方法如下:以web项目为例:一:给类加注释1.
- 概述使用this()或target()可绑定被代理对象实例,在通过类实例名绑定对象时,还依然具有原来连接点匹配的功能,只不过类名是通过增强方
- 本文实例讲述了Android编程实现禁止系统锁屏与解锁亮屏的方法。分享给大家供大家参考,具体如下:需求:某个时刻任务执行完毕,关闭屏幕,某时
- 一、前言上一篇文章中我们已经Spring Boot 利用注解方式整合 MyBatis,今天我们就来看看,如何利
- 今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查、分页、排序、事务操作等功能。下面先来介绍一下JPA中一些常用的
- 前言本文主要介绍了关于android实现一键锁屏和一键卸载的相关内容,分享出来供大家参考学习,这两个功能也是大家在开发中会遇到的两个需求,下
- 本文实例讲述了Android编程开发之RadioGroup用法。分享给大家供大家参考,具体如下:RadioGroup 有时候比较有用.主要特
- @CacheEvict无法解决分页缓存清除当下比较热门的spring缓存就是encache,但是最近在写毕业设计的时候,发现了在缓存分页的时
- 前言今天想到了一个问题,如果一个依赖只有子模块用到了,是放入子模块的 pom.xml 呢,还是放入父模块的 pom.xml 呢?理论上当然是
- AsyncContextAsyncContext是Servlet 3.0使Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响
- 目录1、第一步2、第二步3、最后可以检查一下设计designer.cs的文件看看对不对很多初学者都想把默认的C#关闭按钮事件弄明白,主要用在
- 首先我们看下object源码中如何定义hashcode与equals方法的public native int hashCode();publ
- 前言通过ioctl跟binder驱动交互,实现以最快的方式唤醒新的保活服务,最大程度防止保活失败。同时,我也将跟您分享,我是怎么做到在不甚了
- 有一段时间,正则表达式学习很火热很潮流,当时在脚本之间平台一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的
- 我们开发一个Spring Boot项目,肯定要导入许多的静态资源,比如css,js等文件如果我们是一个web应用,我们的main下会有一个w
- 直接上代码public static class ImageCompress { /// <su