博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java web 生成验证码
阅读量:6564 次
发布时间:2019-06-24

本文共 5724 字,大约阅读时间需要 19 分钟。

hot3.png

最新版本的eclipse在创建项目的时候没有自动生成web.xml,发觉是在新建Dynamic Web Project时,Dynamic web module version默认选择了3.0,原来是版本更新,自动默认的选择的是注解的形式,如果想在建立项目的时候自动生成web.xml,则将版本选择为2.5即可。index.jsp:<%@ page language="java" contentType="text/html; charset=UTF-8"   import = "java.util.*" pageEncoding="UTF-8"%>
登录
Image:(Servlet类)package com.wf.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Image */public class Image extends HttpServlet {    private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public Image() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        response.setContentType("image/jpeg");// 设置相应的类型 告诉浏览器输出的类型为图片类型        response.setHeader("Pragma", "No-cache");// 设置响应头告诉浏览器不需要缓存此内容        response.setHeader("Cache-Control", "no-cache");        response.setDateHeader("Expire", 0);        RandomValidateCode randomValidateCode = new RandomValidateCode();        try {            randomValidateCode.getRandcode(request, response);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(request, response);    }}RandomValidateCode:生成验证码package com.wf.web;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/* * *@author meson * *@time 2014年9月28日上午9:41:19 * */public class RandomValidateCode {    public static final String RANDOMCODEKEY = "RADNOMVALIDATECODEKEY";// 放到session中的key    private Random random = new Random();    private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";// 随机产生的字符串    private int width = 150;// 随机产生验证码的宽度和高度    private int height = 55;    private int lineSize = 20;// 干扰线的数量    private int stringNum = 6;// 随机产生字符的数量    /*     * 获得字体     */    private Font getFont() {        return new Font("Fixedsys", Font.CENTER_BASELINE,28);    }    // 获得随机的颜色    private Color getRandColor(int fc, int bc) {        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);    }    /*     * 生成随机图片     */    public void getRandcode(HttpServletRequest request,            HttpServletResponse response) {        // TODO Auto-generated method stub        HttpSession session = request.getSession();        BufferedImage image = new BufferedImage(width, height,                BufferedImage.TYPE_3BYTE_BGR);        Graphics g = image.getGraphics();        g.fillRect(0, 0, width, height);        g.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));        g.setColor(getRandColor(110, 113));        for (int i = 0; i <= lineSize; i++) {            drowLine(g);        }        String randomString = " ";        for (int i = 1; i <= stringNum; i++) {            randomString = drowString(g, randomString, i);        }        System.out.println(randomString);        session.removeAttribute(RANDOMCODEKEY);        session.setAttribute(RANDOMCODEKEY, randomString);                g.dispose();        try {            ImageIO.write(image, "JPEG", response.getOutputStream());        } catch (Exception e) {            e.printStackTrace();        }    }        /*     * 绘制字符串     */    private String drowString(Graphics g, String randomString, int i) {        // TODO Auto-generated method stub        g.setFont(getFont());        g.setColor(new Color(random.nextInt(101), random.nextInt(111), random                .nextInt(121)));        String rand = String.valueOf(getRandomString(random                .nextInt(randomString.length())));        randString += rand;        g.translate(random.nextInt(3), random.nextInt(3));        g.drawString(rand, 13 * i, 16);        return randString;    }    /*     * 获取随机的字符创     */    private String getRandomString(int nextInt) {        // TODO Auto-generated method stub        return String.valueOf(randString.charAt(nextInt));    }    /*     * 绘制干扰线     */    private void drowLine(Graphics g) {        // TODO Auto-generated method stub        int x = random.nextInt(width);        int y = random.nextInt(height);        int x1 = random.nextInt(13);        int y1 = random.nextInt(15);        g.drawLine(x, y, x1, y1);    }}web.xml配置文件:
  
Rand
  
    
index.html
    
index.htm
    
index.jsp
    
default.html
    
default.htm
    
default.jsp
  
  
    
    
Image
    
Image
    
com.wf.web.Image
  
  
    
Image
    
/Image
  

转载于:https://my.oschina.net/babymason/blog/322811

你可能感兴趣的文章
C#中的扩展方法
查看>>
防晒霜
查看>>
@AutoWired注解使用时可能会发生的错误
查看>>
禁用输入框 浏览器的自动补全功能
查看>>
Mybatis配置文件属性讲解
查看>>
解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4
查看>>
LR--用栈实现移进--归约分析(demo)
查看>>
二叉树
查看>>
基于 HTML5 的 WebGL 3D 版俄罗斯方块
查看>>
使用Windbg调试系统弹出的内存不可读错误
查看>>
python之多线程通信
查看>>
Install Ubuntu Fonts on Fedora17
查看>>
Java 沙箱安全模型
查看>>
打印沙漏
查看>>
常用软件下载地址整理~(数据库,开发工具,资料站点等笔记)
查看>>
PS中怎么给图层解锁
查看>>
JSF 中h:link 和h:commandLink和 h:outputLink之间的区别
查看>>
在应用中集成科大讯飞的语音识别技术
查看>>
Android 两种为自定义组件添加属性的使用方法和区别
查看>>
Django学习笔记(1)--第一个项目
查看>>