JavaWeb项目页面上实现验证码制作

Java实现验证码制作,本人是在慕课网上根据视频讲解,按照流程来编写的代码,加了一些注释。验证码的类型是比较早期的那种。

先来个效果图吧:


Web配置文件中配置Servlet:


图片生成的Servlet:

public class imageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        BufferedImage bi =new BufferedImage(68,22,BufferedImage.TYPE_INT_RGB);//图像数据缓冲区
        Graphics g = bi.getGraphics();//绘制图片
        Color c =new Color(200,150,255);//背景颜色
        g.setColor(c);//设置背景颜色x
        g.fillRect(0,0,68,22);//背景大小
        char[] ch = "abcdefghijklmnopqrstuvwxyz0123456789".toCharArray();//创建数组提供随机选取
        Random r = new Random();//生成随机数
        int len=ch.length,index;
        StringBuffer sb = new StringBuffer();
        for (int i = 0;i<4;i++){
            index = r.nextInt(len);
            g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255)));//随机颜色
            g.drawString(ch[index]+"",(i*15)+3,18);//随机字符
            sb.append(ch[index]);
        }
        request.getSession().setAttribute("piccode", sb.toString());//验证码信息输入到session中
        ImageIO.write(bi, "jpg", response.getOutputStream());//输出图片
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

验证输入验证码是否正确:

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String piccode = (String) request.getSession().getAttribute("piccode");//从session中获取验证码
        String checkcode = request.getParameter("checkcode");//获取页面输入的验证码
        response.setContentType("text/html;charset=UTF-8");//接收字符编码设置
        PrintWriter out = response.getWriter();//创建输出流
        if (checkcode.equals(piccode)) {
            out.print("成功");
        } else {
            out.print("验证码输入错误");
        }
        out.flush();
        out.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

JSP页面:

<head>
    <title>验证码</title>
    <script>
        function reloadCode() {
            var time = new Date().getTime();//获取时间用来使连接不一样,避免浏览器因为缓存而使刷新图片功能失效
            document.getElementById("imageCode").src = "/servlet/imageServlet?d="+time;
        }
    </script>
</head>
<body>
<form action="/servlet/LoginServlet" method="get">
验证码:
<input type="text" name="checkcode"/>
<img src="/servlet/imageServlet" id="imageCode" alt="验证码"/>
<a href="javascript:reloadCode();">看不清楚</a></br>
    <input type="submit" name="验证" />
</form>
</body>

阅读更多
个人分类: java Web开发
上一篇java Web项目将页面文本框中内容保存(读取)在本地txt文件中
下一篇根据xml文件中的地址属性获取经纬度
想对作者说点什么? 我来说一句

java web开发之验证码

2012年05月21日 139KB 下载

简易图形验证码

2018年03月31日 4KB 下载

没有更多推荐了,返回首页

关闭
关闭