如何在tomcat服务器下写一个小验证码
2013-08-16 10:05
281 查看
平时在上网的时候, 我们都会看到各种各样的验证码, 说实话, 有很多的验证码真的很难看, 特别是12306网站的验证码, 填几个错几个. 那时候以为这些验证码都是人们用画图工具画好了, 放在一个文件里, 一个图片对应着一个值, 那个值就是我们要填的值.
今天我才知道, 原来那些该死的验证码都是程序写出来的. 自己也小试了一下. 还挺满意的.
接下来启动tomcat效果如下
喜欢的也可以自己试一下.
今天我才知道, 原来那些该死的验证码都是程序写出来的. 自己也小试了一下. 还挺满意的.
package com.babydance.demo; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetImageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //doGet直接调用doPost,因为两个都功能是一样的 this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置验证码图片的大小 int width = 80; int height = 40; //创建图片 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //创建图层,获得画板 Graphics g= image.getGraphics(); //确定画板颜色 g.setColor(Color.BLACK); //画一个黑色矩形 g.fillRect(0, 0, width, height); g.setColor(Color.WHITE); //画一个白色矩形,这样就形成了一个黑色的方框 g.fillRect(1, 1, width-2, height-2); //确定我们的验证码会出现什么 String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; //new一个随机变量 Random random = new Random(); g.setColor(Color.RED); //设置写入图片的字体和大小 g.setFont(new Font("宋体",Font.BOLD,20)); //随机选四个元素 for (int i = 0; i < 4; i++) { //设置字体的颜色 g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255))); //获得一个随机字符 int index = random.nextInt(62); //截取字符串 String str = data.substring(index,index+1); //需要将随机的字符,写到图片中 g.drawString(str, 20*i, 20); } //画出10条干扰线条 for (int i = 0; i < 10; i++) { g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255))); //画线 g.drawLine(random.nextInt(80), random.nextInt(40), random.nextInt(80), random.nextInt(40)); } //通知浏览器发送的数据时一张图片 response.setContentType("image/jpeg"); //将图片发送给浏览器 ImageIO.write(image, "jpg", response.getOutputStream()); } }
接下来启动tomcat效果如下
喜欢的也可以自己试一下.
相关文章推荐
- 如何利用tomcat搭建一个动态服务器
- tomcat解析(-)学习如何写一个servlet服务器
- 如何打一个可执行war包并使之可以部署在tomcat服务器上
- 如何区分同一个服务器上的多个tomcat进程
- 如何设置tomcat服务器编码为utf-8编码
- 如何用个人PC搭建一个测试用的服务器
- 如何同时启动多个Tomcat服务器
- 如何同时启动多个Tomcat服务器
- 如何将tomcat服务器启动端口改为80
- Tomcat-Web服务器加速之Tomcat7性能如何调优
- Tomcat服务器简单应用及如何配置虚拟主机
- Tomcat安装步骤(tar包)一个server服务器、一个image服务器
- android与WEB服务器交互时,如何保证在同一个会话Session中通信
- 一个服务器上运行多个tomcat,显示总启动某一个特定tomcat
- ubuntu下如何同时启动多个Tomcat服务器
- 如何处理服务器SSL收到了一个弱临时Diffie-Hellman 密钥?
- 如何解决Tomcat 服务器点击startup.bat 时闪退的问题
- Java--Eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
- Tomcat服务器如何配置Post提交数据长度不受限制