servlet 验证码生成
servlet
package com.htpo.net;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class testget extends HttpServlet {
/**
* Constructor of the object.
*/
public testget() {
super();
}
public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8',
'9', '0', 'A', 'Q', 'W', 'E', 'R', 'T', 'G', 'D', 'S', 'W', 'G',
'H' };// 随机字符的字典
public static Random random = new Random();// 随机数
public static String getRandomString() {
// 字符的缓存
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 6; i++) {// 循环 六次
buf.append(CHARS[random.nextInt(CHARS.length)]);
}
return buf.toString();
}
public static Color getRandomColor() {
return new Color(random.nextInt(255), random.nextInt(255),
random.nextInt(255));
}
public static Color getReverseColor(Color c) {
return new Color(255 - c.getRed(), 255 - c.getGreen(),
255 - c.getBlue());
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* response.setContentType("text/html"); String re =
* request.getParameter("username"); System.out.println(re); PrintWriter
* out = response.getWriter();
*
* // response.sendRedirect("test.jsp"); // String s =
* "[{ id:1, pId:0, name:"pNode
* 1", open:true},{ id:11, pId:1, name:"pNode
* 11"},{ id:111, pId:11, name:"leaf node
* 111"},{ id:112, pId:11, name:"leaf node
* 112"},{ id:113, pId:11, name:"leaf node
* 113"},{ id:114, pId:11, name:"leaf node
* 114"},{ id:12, pId:1, name:"pNode 12"},{ id:121, pId:12, name:"leaf
* node 121"},{ id:122, pId:12, name:"leaf node
* 122"},{ id:123, pId:12, name:"leaf node
* 123"},{ id:124, pId:12, name:"leaf node
* 124"},{ id:13, pId:1, name:"pNode 13 - no
* child", isParent:true},{ id:2, pId:0, name:"pNode
* 2"},{ id:21, pId:2, name:"pNode
* 21", open:true},{ id:211, pId:21, name:"leaf node
* 211"},{ id:212, pId:21, name:"leaf node
* 212"},{ id:213, pId:21, name:"leaf node
* 213"},{ id:214, pId:21, name:"leaf node
* 214"},{ id:22, pId:2, name:"pNode 22"},{ id:221, pId:22, name:"leaf
* node 221"},{ id:222, pId:22, name:"leaf node
* 222"},{ id:223, pId:22, name:"leaf node
* 223"},{ id:224, pId:22, name:"leaf node
* 224"},{ id:23, pId:2, name:"pNode 23"},{ id:231, pId:23, name:"leaf
* node 231"},{ id:232, pId:23, name:"leaf node
* 232"},{ id:233, pId:23, name:"leaf node
* 233"},{ id:234, pId:23, name:"leaf node
* 234"},{ id:3, pId:0, name:"pNode 3 - no child", isParent:true}]";
* out.write(s);
*
* out.println(
* "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
* out.println("<HTML>");
* out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
* out.println(" <BODY>"); out.print(" This is ");
* out.print(this.getClass()); out.println(", using the GET method");
* out.println(" </BODY>"); out.println("</HTML>");
*
* out.flush(); out.close();
*/
String s = request.getParameter("username");
System.out.println(s);
response.setContentType("image/jpeg");// 设置输出的类型
String randomString = getRandomString();// 得到返回的字符集
request.getSession(true).setAttribute("randomString", randomString);
int with = 100;
int hight = 30;// 生成图片的大小
Color color = getRandomColor();// 用于背景色
Color reverse = getReverseColor(color);// 用于前景色
BufferedImage bi = new BufferedImage(with, hight,
BufferedImage.TYPE_INT_RGB);// 创建一个彩色的图片
Graphics2D g = bi.createGraphics();// 获取到绘图对象
g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16));// 设置字体
g.setColor(color);// 设置颜色
g.fillRect(0, 0, with, hight);// 绘制背景
g.setColor(reverse);// 设置颜色
g.drawString(randomString, 18, 20);// 绘制随机字符
for (int i = 0, n = random.nextInt(100); i < n; i++) {// 画最多100个噪音点
g.drawRect(random.nextInt(with), random.nextInt(hight), 1, 1);// 随机噪音点
}
ServletOutputStream out = response.getOutputStream();
// 转换图片格式
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi);// 对图片进行编码
out.flush();// 输出
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
---------------------------------------
jsp
function reloadImage(){
document.getElementByIdx_x_x("btn").disabled=false;
document.getElementByIdx_x_x("Identity").src='testget?ts='+new Date().getTime();
}
function yanzheng() {
}
</script>
<img src="testget" id="Identity" />
<input type="button" id="btn" value="换个图片" onclick="reloadImage()"/>
servlet 验证码生成的更多相关文章
- servlet中生成验证码
在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image ...
- Web---图片验证码生成教程详解-从简单到复杂-从本地到前后台
首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; im ...
- 利用谷歌 kaptcha 进行验证码生成
package main.com.smart.controller; import com.google.code.kaptcha.Producer; import main.com.smart.ut ...
- 轻量级验证码生成插件webutil-licenseImage
轻量级验证码生成插件webutil-licenseImage源码与实例应用 webutil-licenseImage 插件内置4种验证码样式,支持用户扩展.自定义样式实现简单验证码. 源码脱管地址 ...
- JAVA 验证码生成(转)
最近做了一下验证码的功能,网上找了一篇还不错,引用下:http://blog.csdn.net/ruixue0117/article/details/22829557 这篇文章非常好,但是web和js ...
- Web后端 JAVA实现验证码生成与验证功能
首先,写一个验证码生成帮助类,用来绘制随机字母: <span style="font-size:14px;">import java.awt.Color; impor ...
- java web中验证码生成的demo
首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...
- JavaWeb开发之普通图片验证码生成技术与算术表达式验证码生成技术
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134649.html 另:算术验证码生成的JSP.Servlet实现均已移植github:https:/ ...
- 轻量级验证码生成插件webutil-licenseImage源码与实例应用
webutil-licenseImage 插件内置4种验证码样式,支持用户扩展.自定义样式实现简单验证码. 源码脱管地址: http://code.google.com/p/licenseimage/ ...
随机推荐
- Shiro 五张表
参考博客: http://blog.csdn.net/frankcheng5143/article/details/50836619 Filter:运行过程中改变进入资源的请求和资源返回的响应中的有效 ...
- Unity读取Android SDcard文件
一.添加权限 权限添加 :Player settings -- Other settings -- write permission的设置 Sdcard.这个是在Unity编辑器里打包的情况. 如果导 ...
- C# WPF DevExpress 图表控件之柱状图
说明:DevExpress版本是17.1.VS是2015. XAML: <!--#region 图表控件--> <dxc:ChartControl x:Name="char ...
- webkitAnimationEnd动画事件
春节终于过完了,自己春节似乎过的有点大,过完春节之后,态度一直没有调整好,总有一股过节的情绪,没有完全进入学习和工作的状态来.继续调整当中…… 这两天项目中遇到一个小需求,十分类似于支付宝蚂蚁森林给小 ...
- StanFord ML 笔记 第四部分
第四部分: 1.生成学习法 generate learning algorithm 2.高斯判别分析 Gaussian Discriminant Analysis 3.朴素贝叶斯 Navie Baye ...
- 5.2_k-means案例分析
k-means案例分析 手写数字数据上K-Means聚类的演示 from sklearn.metrics import silhouette_score from sklearn.cluste ...
- ASP.NET WebApi 图片上传
以下是代码的实现过程: Html页面表单布局: <form id="UpPicture" enctype="multipart/form-data" ac ...
- 9.纯 CSS 创作一种按钮被瞄准的交互特效
原文地址:https://segmentfault.com/a/1190000014680999 吃鸡倍镜,哈哈哈 HTML代码: <div class="box"> ...
- CentOS修改locale解决调用API乱码问题
查看所有的locale语言 locale 查看当前操作系统使用的语言 echo $LANG 永久设置系统locale语言 vi /etc/profile LANG="zh_CN.UTF-8& ...
- 在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面)
在Windows系统上一批可以下载但是需要经过编译再安装的第三方的直接编译后的版本(UCI页面) (https://www.lfd.uci.edu/~gohlke/pythonlibs/) win10 ...