public class Img extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置Content-Type响应头 response.setContentType("image/jpeg"); //下面三条语句用于设置页面不缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); OutputStream out = response.getOutputStream(); int width = 80; int height = 20; //建立指定宽、高和BufferedImage对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //随机生成类 Random random = new Random(); //生成背景色 g.setColor(getRandColor(200,250)); g.fillRect(0, 0, width, height); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160,200)); for (int i=0;i<155;i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } //设置字体 g.setFont(new Font("Times New Roman",Font.ITALIC,18)); String sRand = ""; for(int i = 0; i < 4 ; i++){ String rand = String.valueOf(random.nextInt(10)); sRand += rand; //设置随机颜色 g.setColor(new Color(20 + random.nextInt(110),20 + random.nextInt(110),20 + random.nextInt(110))); //绘制 g.drawString(rand, 20*i + 6, 16); } g.dispose(); //输出图像到页面 ImageIO.write(image, "JPEG", out); } //给定范围获得随机颜色 private Color getRandColor(int fc,int bc){ Random random = new Random(); if(fc>255) fc=255; if(bc>255) bc=255; int r=fc+random.nextInt(bc-fc); int g=fc+random.nextInt(bc-fc); int b=fc+random.nextInt(bc-fc); return new Color(r,g,b); } } web.xml配置: <servlet> <servlet-name>img</servlet-name> <servlet-class>com.servlet.Img</servlet-class> </servlet> <servlet-mapping> <servlet-name>img</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> JSP应用: <img alt="" src="/test">, src是url-pattern的值
随机生成图片验证码
猜你喜欢
转载自huangshanghua.iteye.com/blog/1689214
今日推荐
周排行