java实现生成验证码图片
2015-12-26 17:16
639 查看
1.将图片验证码生成到本地的例子;
web.xml的配置:
例子打包下载
package demo; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; /** * @author 郑明亮 * @Time:2015年12月25日 下午9:29:44 * @version 1.0 */ public class test { public static void main(String[] args) { BufferedImage image=new BufferedImage(70, 25, BufferedImage.TYPE_INT_BGR); //相当于得到一支笔 Graphics graphics=image.getGraphics(); graphics.setColor(Color.black); graphics.fillRect(0, 0, 70, 30); String randomString=""; Random random=new Random(); for(int i=0;i<5;i++){ // 0~9随机数 int num=random.nextInt(10); //A-Z,a-z随机字母 char ch=(char) (random.nextInt(52)+65); String []array={num+"",ch+""}; //随机取出一个,可能是数字,可能是字母 randomString+=array[random.nextInt(2)]; } //设置画笔的颜色 graphics.setColor(Color.red); //设置字体的属性 graphics.setFont(new Font(Font.SERIF, Font.TYPE1_FONT, 25)); //将随机字符画到图片上 graphics.drawString(randomString, 5, 18); //在G盘的upload目录下生成该图片 File file =new File("G:/upload/验证码.png"); try { ImageIO.write(image, "png", file); System.out.println("成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("失败"); } } }2.一般我们都是将生成的验证码在页面中通过<img src="验证码图片地址"/>引入的,即,需要将其放到页面中;再用用File file =new File()的方式就不太合适了,可以用response.getOutputStream()的形式;当然了在web.xml中还要有相应的配置servlet映射
package org.zml.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author 郑明亮 * @Time:2015年12月26日 下午12:05:53 * @version 1.0 */ public class GetCode extends HttpServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { BufferedImage image=new BufferedImage(80, 25, BufferedImage.TYPE_INT_BGR); Graphics graphics=image.getGraphics(); graphics.setColor(Color.black); graphics.fillRect(0, 0, 80, 30); String randomString=""; Random random=new Random(); for(int i=0;i<5;i++){ // 0~9随机数 int num=random.nextInt(10); //A-Z,a-z随机字母 char ch1=(char) (random.nextInt(26)+65); char ch2=(char) (random.nextInt(26)+97); String []array={num+"",ch1+"",ch2+""}; //随机取出一个,可能是数字,可能是字母 randomString+=array[random.nextInt(3)]; } //设置画笔的颜色 graphics.setColor(Color.red); //设置字体的属性 graphics.setFont(new Font(Font.SERIF, Font.TYPE1_FONT, 25)); //将随机字符画到图片上 graphics.drawString(randomString, 5, 18); File file =new File("G:/upload/验证码.png"); try { ImageIO.write(image, "png", res.getOutputStream()); System.out.println("成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("失败"); } } }
web.xml的配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>demo</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>getCode</servlet-name> <servlet-class>org.zml.servlet.GetCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>getCode</servlet-name> <url-pattern>/image</url-pattern> </servlet-mapping> </web-app>
例子打包下载
相关文章推荐
- java.lang.InstantiationException错误
- HashMap分析
- SPRING + JUNIT + DBUnit + Mockito来做单测
- 修改文件夹中所有文件的文件名
- 使用Spring MVC统一异常处理实战
- eclipse工程和jdk、jre的关系
- Java实体类的作用--资料
- springmvc多文件上传
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(下)
- 浅谈Java SE、Java EE、Java ME三者的区别
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(上)
- Newsgroup18828文本分类器、文本聚类器、关联分析频繁模式挖掘算法的Java实现工程下载及运行FAQ
- k-means聚类JAVA实例
- 数据挖掘-基于Kmeans算法、MBSAS算法及DBSCAN算法的newsgroup18828文本聚类器的JAVA实现(下)
- 数据挖掘-基于Kmeans算法、MBSAS算法及DBSCAN算法的newsgroup18828文本聚类器的JAVA实现(上)
- java之冒泡排序与选择排序
- Java过滤器与SpringMVC拦截器之间的关系与区别
- 多线程模型及示例
- JDK的下载与安装
- leetcode:92. Reverse Linked List II(Java)解答