java登录的 验证码_java登录验证码
一、创建web项目
二、生成验证码
创建VcodeObject.java,存储验证码与图片
package com.demo.vcode;
import java.io.InputStream;
public class VcodeObject {
private String code;
private InputStream in;
public VcodeObject() {
}
public VcodeObject(String code, InputStream in) {
this.code = code;
this.in = in;
}
//getters & setters
}
创建Vcode.java生成验证码与图片
package com.demo.vcode;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class Vcode {
public VcodeObject create() {
// 生成随机验证码
String code = this.generateRandomVerifyCode(4);
// 生成附带验证码的图片
BufferedImage img = this.generateImgWithCode(code, 80, 34);
InputStream in = this.putImgInStream(img);
return new VcodeObject(code, in);
}
/**
* 随机生成验证码
*
* @param length
* @return String
*/
private String generateRandomVerifyCode(int length) {
// 需要生成验证码的长度
if (length <= 0 || length >= 8)
length = 4;
// 随机生成字符的范围
String scope = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuffer code = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
code.append(scope.charAt(random.nextInt(62)));
}
return code.toString();
}
/**
* 生成带有验证码的图片
*
* @param code
* @param width
* @param height
* @return BufferedImage
*/
private BufferedImage generateImgWithCode(String code, int width, int height) {
BufferedImage img = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics brush = img.getGraphics();
// 设置背景和边框颜色
brush.setColor(this.getColor());
brush.fillRect(0, 0, width - 1, height - 1);
brush.drawRect(0, 0, width - 1, height - 1);
// 写入验证码
brush.setColor(this.getColor());
brush.setFont(new Font("Times New Roman", Font.ITALIC, 28));
brush.drawString(code, 7, 22);
// 绘制干扰线条
// 图片画完,关闭资源
brush.dispose();
return img;
}
/**
* 获取随机颜色
*
* @return Color
*/
private Color getColor() {
Random random = new Random();
int r = random.nextInt(255);
int g = random.nextInt(255);
int b = random.nextInt(255);
return new Color(r, g, b);
}
/**
* 将图片放入输入流中
*
* @param image
* @return InputStream
*/
private InputStream putImgInStream(BufferedImage image) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
ImageIO.write(image, "JPEG", out);
} catch (IOException e) {
e.printStackTrace();
}
InputStream in = new ByteArrayInputStream(out.toByteArray());
return in;
}
}
三、输出验证码
创建DemoServlet.java
package com.demo.vcode;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
res.setContentType("image/png");
Vcode vcode = new Vcode();
VcodeObject vcodeObject = vcode.create();
InputStream in = vcodeObject.getIn();
req.getSession().setAttribute("vcode", vcodeObject.getCode());
byte[] bytes = new byte[1024];
int length = 0;
try {
OutputStream out = res.getOutputStream();
while ((length = in.read(bytes)) != -1) {
out.write(bytes, 0, length);
}
in.close();
out.flush();
} catch (Exception e) {
}
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
}
public void destroy() {
}
}
配置web.xml
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
vcode
vcode
com.demo.vcode.DemoServlet
vcode
/vcode
浏览器地址栏访问
http://127.0.0.1:8080/vcode/vcode
java登录的 验证码_java登录验证码相关推荐
- java 3d验证码_Java实现验证码具体代码(图片、汉字)
本文为大家分享两个实例,相信大家一定会喜欢. 实例1:随机生成验证码图片并将之输出为一个png文件 效果图: import java.awt.Color; import java.awt.Font; ...
- java验证码验证码_Java登录页面实时验证用户名密码和动态验证码
●登录名和密码是同时验证的,并不是先验证登录名是否存在,然后再验证密码是否正确,是同时进行验证,若登录名和密码当中一个条件不符合,则提示用户登录名或者密码错误, 这样做的意义是为了保证用户信息的安全( ...
- java http验证码_Java 云片验证码短信发送
1.获取云片APIKEY 登录云片官网:www.yunpian.com 获取APIKEY 2.查看API文档 官网首页 进入API文档页面 短信分类.png 3.java配置 配置文件中添加 capt ...
- java 生成校验验证码_java生成验证码并进行验证
一实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证 最后通过ImageIO将 ...
- java登陆界面背景_Java登录界面的实现(注册、登录、背景图片)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.java * 作者:常轩 * 微信公众号:Worldh ...
- java 图形界面 登陆_java登录图形界面
编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验.对于每个用户名有三次密码输入机会. package beizi; impor ...
- java图形验证码_java图形验证码实现
今天来学习下图形验证码的生成,首先依赖开源组件: com.github.penggle kaptcha 2.3.2 在web.xml中配置名为Kaptcha的servlet: Kaptcha com. ...
- java实现空心验证码_Java实现验证码
public void getYZM(HttpServletRequest request, HttpServletResponse response){ //验证码图片宽度 final int IM ...
- java 登录验证码_java jsp实现登录验证码
java jsp实现登录验证码 工作中使用的java jsp实现的登录验证码.代码记录如下: 1.登录主页面(login.jsp) pageEncoding="UTF-8"%> ...
最新文章
- 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)
- scrum看板工具做问题跟踪
- vs2013突然没有代码提示功能了。
- Android ADB被占用 重启 ADB方法
- python自动化测试数据驱动_Python 自动化测试(四):数据驱动
- iphone7配置_西安苹果售后维修教您iphone7发热严重、耗电快怎么解决?
- 怎么在Mac上安装Tomcat 7
- 腾讯视频手机app下载安装_腾讯视频怎么签到
- Laravel 指定日志生成目录
- java多个条件排序_java定制化排序,多个条件排序
- 普通话测试第四题评分标准_2017年普通话考试-评分细则
- (十六)java版b2b2c社交电商spring cloud分布式微服务-用restTemplate消费服务
- SQL Server 2008 R2安装
- 13 个 Python 必备的知识,建议收藏!
- 清华计算机学院博士后,清华大学博士后
- 不能不用也不可乱用的标准化和归一化处理
- android m是什么版本号,Android m是什么版本
- OpenCV开发笔记(四十八):红胖子8分钟带你深入了解直方图均衡化(图文并茂+浅显易懂+程序源码)
- 淘宝商品详情页API接口、淘宝商品销量API接口、淘宝商品列表API接口、淘宝APP详情API接口、淘宝详情API接口
- 【无标题】vue -解决“You may use specia I comments to disa some warnings. ble Use//eslint-disable-next-line
热门文章
- 安装deepin系统步骤
- 给定圆的半径r,求圆的面积。
- python笔试知识点_python知识点及面试面试大集合
- Linux内核源码行数,Linux源代码已超过1000万行 价值达5亿美金
- 详解Vue.use使用与原理
- Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序
- 【2012百度之星/初赛上】A:度度熊就是要第一个出场
- 通过zookeeper连接hive beeline
- # EXP8 Web基础
- 网站如何从http升级成https