Servlet里写验证码
public class CodeServlet extends HttpServlet {
/**
* 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("image/jpeg");
// 创建图片缓冲流
int width = 90; // 宽度
int height = 25; // 高度
int imageType = BufferedImage.TYPE_INT_RGB; // 颜色
BufferedImage image = new BufferedImage(width, height, imageType);
// 获取缓冲图片流中的画布
Graphics g = image.getGraphics();
// 设置画笔的颜色
g.setColor(Color.lightGray);
// 填充画布区域
g.fillRect(0, 0, width, height);
// 输出的内容
String word = "abcdefhijklmnopqrstuvwxyz";
// 将要输出的内容,转换为 字节数组
char[] words = word.toCharArray();
// 定义一个随机对象
Random random = new Random();
String sessionWord = "";
for (int i = 0; i < 4; i++) {
String temp = words[random.nextInt(words.length)] + "";
sessionWord += temp;
// 更改画笔的颜色
g.setColor(new Color(random.nextInt(255), random.nextInt(255),
random.nextInt(255)));
g.setFont(new Font("微软雅黑", Font.BOLD, 20));
// 使用画笔,在画布上写字
g.drawString(temp, 20 * i + 10, 20);
}
request.getSession().setAttribute("code", sessionWord);
// 获取servlet 输出流
OutputStream output = response.getOutputStream();
// 图片io流
ImageIO.write(image, "jpeg", output);
}
}
Servlet里写验证码的更多相关文章
- 在php里写sql查询需要注意的事情
---恢复内容开始--- 今天往php里写了一条sql查询, $sql = "select * from videos where vuser=".$u: $ret = mysql ...
- Controller里写自己需要的Action,参数的名字必须和路由设置的参数名一致
Controller里写自己需要的Action,参数的名字必须和路由设置的参数名一致,如果参数不一致,传过去为null
- asp.net尽量不在js里写<%%>
asp.net尽量不在js里写<%%> eg: <script type="text/javascript"> var rootsid="&quo ...
- 前端要革命?看我在js里写SQL
在日新月异的前端领域中,前端工程师能做的事情越来越多,自从nodejs出现后,前端越来越有革了传统后端命的趋势,本文就再补一刀,详细解读如何在js代码中执行标准的SQL语句 为什么要在js里写SQL? ...
- servlet中生成验证码
在servlet中生成验证码 package login; import java.awt.Color; import java.awt.Graphics; import java.awt.image ...
- Asp.net mvc怎么在razor里写js代码
我试图在Razor里写JS代码,但是不行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...
- java调c# exe 程序,exe里写文件问题
应用场景描述: java web程序,触发 调用c#写的后台exe程序,发现exe里写的文件找不到.单独在cmd命令行下执行exe没问题: 问题查找: 由于exe里获取文件路径错误导致: 解决方法: ...
- <ItemTemp>里写判断语句
<%@ Language="C#" %> <html> <head></head> <body> <%=DateT ...
- 不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)
此文章的主旨是希望过于专注.NET程序员在做好工作.写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说. ...
随机推荐
- sphinx续4-coreseek的工作原理
原文地址:http://blog.itpub.net/29806344/viewspace-1399621/ 在分析sphix原理之前,我先澄清一下为什么经常出现coreseek这个词? 因为sphi ...
- Magento添加一个下拉登陆菜单Create Magento Dropdown Login in a few minutes
Dropdown login forms are not a feature many online stores use, but in some cases they could be quite ...
- CodeTimer
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- notepad++代码折叠对应的树形结构快捷键
树形层次,从1开始计数 <!doctype html> <html lang="en" class="1"> <head clas ...
- scrollba美化
1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x水平方向内容溢出时的设置 overflow-y垂直方向内容溢出时的设置 以上三个属性设置的值 ...
- 【Netty学习】 ChannelHandler 改动及影响
channelHandler 在Netty 4.x版本有了相当大的改动 http://netty.io/wiki/new-and-noteworthy.html 官网的更新改进说明. 以下节选官网 ...
- Java Set操作
Set:无顺序,不包含重复的元素 HashSet:为快速查找设计的Set.存入HashSet的对象必须定义hashCode(). TreeSet: 保存次序的Set, 底层为树结构.使用它可以从Set ...
- linux type命令用法_转
转自:http://codingstandards.iteye.com/blog/831504 在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ t ...
- 第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- django 一些库
https://django-adminactions.readthedocs.io/en/latest/actions.html http://www.ziqiangxuetang.com/djan ...