在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. docker中,将容器中的文件拷贝到宿主机上

    需求说明: 今天在做docker修改配置文件的问题,一个容器要使用另外容器的一个配置文件,但是在宿主机上没有, 就考虑将容器中的文件拷贝到宿主机上,在此记录下操作过程. 操作过程: 1.通过docke ...

  2. [Understanding] Compressive Sensing and Deep Model

    低维模型与深度模型的殊途同归 有助理解核心,陌生概念需要加强理解. 对于做机器学习,和做图像视觉的研究者来说,过去的十年是非常激动人心的十年.以我个人来讲,非常有幸接触了两件事情: 第一件是压缩感知( ...

  3. [JS] ECMAScript 6 - Inheritance : compare with c#

    这一章,估计是js最操蛋的一部分内容. 现代方法: 简介 Object.getPrototypeOf() super 关键字 类的 prototype 属性和__proto__属性 原生构造函数的继承 ...

  4. trace-cmd使用方法

    使用trace-cmd有的时候没有来得及使用ctrl+c, 导致出现多个trace.dat.cpu*, 可以使用下面的办法来手动合并trace.dat If a crash happened on a ...

  5. 【中间件安全】Tomcat 安全加固规范

    1. 适用情况 适用于使用Tomcat进行部署的Web网站. 2. 技能要求 熟悉Tomcat配置操作,能够利用Tomcat进行建站,并能针对站点使用Tomcat进行安全加固. 3. 前置条件 1.根 ...

  6. M0 M4时钟控制(一)

    时钟控制器为整个芯片提供时钟源,包括系统时钟和所有外围设备时钟.该控制器还通过单独时钟的开或关,时钟源选择和分频器来进行功耗控制.在CPU使能低功耗PDEN(CLK_PWRCTL[7]) 位和Cort ...

  7. Math.ceil()、Math.floor()和Math.round()

    下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: Math.ceil()执行向上舍入,即它总是将数 ...

  8. URL中的空格

    如果URL中带空格,在浏览器中可以显示,但是如果访问比如 UIImage 获取图片的时候就会出现BAD URL. 解决: NSString* urlText = @"70.84.58.40/ ...

  9. Android Training Caching Bitmaps 翻译

    原文:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 图片缓存 在Android开发中,加载一个图 ...

  10. SSH框架下的表单重复提交

    前几天做了一个功能,是在某个操作后,刷新父页面的,刷新时弹出了下面图的框: 网上查了之后发现这个框是表单重复提交时出现的.分析后发现,这个页面的上一个动作是form submit(在ssh框架下),这 ...