在servlet中生成验证码

package login;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * 生成验证码servlet
 * @author Administrator
 *
 */
public class CheckCodeServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service called");
/**1.设置server响应类型为jpg格式图片 */
response.setContentType("image/jpeg");
/**2.绘图**/
//1.在内存中开辟空间存储图片
BufferedImage image = new BufferedImage(60,25,BufferedImage.TYPE_INT_RGB);
//2.获得画笔
Graphics g = image.getGraphics();
//3.准备随机数对象
Random r = new Random();
//4.设置图片背景色
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
//5.填充
g.fillRect(0, 0, 60, 25);
//6.设置画笔前景色(设置字体颜色)
g.setColor(new Color(0,0,0));
//7.产生随机数
String number = String.valueOf(r.nextInt(99999)+1000);
/**将验证码存放session中*/
HttpSession session =request.getSession();
session.setAttribute("checkcode", number);
//8.数字画到图片上
g.drawString(number, 15,15);
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
/**3.使用特定格式压缩图片并输出*/
//1.建立文件输出流
OutputStream os =response.getOutputStream();
//2.使用指定格式
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(os);
encoder.encode(image);

}

}

在jsp页面使用java产生的验证码:

<td style="width:80px">
验证码:
</td>
<td valign="middle" >
<input name="validatecode" size="7px"/>
<img src="checkcode" id="img"><!-- 等效于"#" -->
<a href="javascript:;" onclick="document.getElementById('img').
src='checkcode?'+new Date().getTime();"><span style="font-size:12px;">看不清。换一张</span></a>
<br/>
<span style="color:red;">
<%
String check_error=(String)request.getAttribute("check_error");
%>
<%=check_error==null?"":check_error%>
</span>
</td>

在xmd文件中面的配置

<servlet>
    <servlet-name>check</servlet-name>
    <servlet-class>login.CheckCodeServlet</servlet-class>
  </servlet>

<servlet-mapping>
    <servlet-name>check</servlet-name>
    <url-pattern>/checkcode</url-pattern>
  </servlet-mapping>

进行验证推断的部分代码:

String validatecode=request.getParameter("validatecode");//验证码

String checkCode=(String)session.getAttribute("checkcode");

在servlet里面进行比較

servlet中生成验证码的更多相关文章

  1. java中生成验证码,以及验证码的使用

    java中生成验证码,以及验证码的使用: 1:验证码生成工具类: import java.awt.Color; import java.awt.Font; import java.awt.Graphi ...

  2. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  3. 使用Servlet动态生成验证码

    最近在重新看了一遍servlert,看到篇优质博客推荐给大家:https://www.cnblogs.com/xdp-gacl/p/3798190.html 顺便把学习过程中的知识记录下来. 今天是如 ...

  4. 2017.11.29 JSP+Servlet 中功能验证码及验证的实现

    源代码如下: validate.jsp <%@ page language="java" import="java.util.*" pageEncodin ...

  5. PHP中生成验证码

    //生成图片$im = imagecreatetruecolor(100,30);//生成颜色,当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色//如果想自定义背景颜色,用到imagefill函 ...

  6. Servlet生成验证码并进行账号密码和验证码的验证登陆!

    前言: 人不是生来就懂事的,在编程的世界也是一样,想想在大一的时候我还是那个连输出Hello World!都不会的小孩子是,现在我已经可以编出属于我自己的小程序了.编程其实并不可怕,可怕的是你不去编. ...

  7. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

  8. Java生成验证码并进行验证(转)

    本文转自http://blog.csdn.net/worm0527/article/details/51030864 一.实现思路 使用BufferedImage用于在内存中存储生成的验证码图片 使用 ...

  9. 详细说说如何生成验证码—ASP.NET细枝末节(4)

    前言 今天小编详细的说一下,ASP.NET网站开发过程中生成验证码的全部问题. 本文的目标,是让读者了解,生成验证码涉及的全部基础知识问题. 当然这里说的是比较简单的验证码. 真正符合要求的验证码,涉 ...

随机推荐

  1. linux:rsync + inotifywait 实现【准实时】同步

    直接上脚本 #!/bin/bash export PATH=./sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:$PATH src=/tmp1 #dest=ro ...

  2. 仿迅雷播放器教程 -- duilib界面(13)

    经过了这么多篇文章的讲解,相信大家也对界面库有一定了解了,用一个新的界面库,肯定要对它进行全方位考察.鉴于公司目前所有的产品都是MFC做的,全部转换成duilib肯定不现实,并且公司的很多项目逻辑和界 ...

  3. [IR] XML Compression

    Ref: https://www.ibm.com/developerworks/cn/xml/x-datacompression/ Language-Equivalent (类似路径压缩 ) root ...

  4. [IR] Suffix Trees and Suffix Arrays

    前缀树 匹配前缀字符串是不言自明的道理. 1. 字符串的快速检索 2. 最长公共前缀(LCP) 等等 树的压缩 后缀树 Let s=abab, a suffix tree of s is a comp ...

  5. web.xml配置DispatcherServlet (***-servlert.xml)

    1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...

  6. Markdown 代码

    我们使用三个反引号来标记代码,语法及效果如下: ```python #!/usr/bin/env python #-*- coding:utf- -*- print("Hello World ...

  7. [原]Jenkins(二)---jenkins之Git+maven+jdk+tomcat

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5331 ...

  8. [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  9. [原]Jenkins(十三)---jenkins用户权限管理

    * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5337874.html 两种策略的比较

  10. mysql8.0驱动问题

    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</a ...