验证验生成的原始方法

package com.tan.guo;

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

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 功能:
 * @author TanZi
 * @time 2015-4-11上午11:16:21
 */
public class ImageServlet extends HttpServlet {

	public void doGet(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,225);
        g.setColor(c);
        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());        //写回图片
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}

jsp上的编写:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">

	function reloadCode(){
		var time=new Date().getTime();
		document.getElementById("imagecode").src="<%=request.getContextPath()%>/servlet/ImageServlet?d="+time;
	}

	</script>
  </head>

  <body>
    验证码:<input type="text" name="checkcode"/>
    <img alt="验证码" id="imagecode" src="<%=request.getContextPath()%>/servlet/ImageServlet"/>
    <a href="javascript:reloadCode();">看不清</a>
    <br>
  </body>
</html>
时间: 2024-10-25 01:42:56

验证验生成的原始方法的相关文章

生成验证码的方法集合(一)

用户在注册或登录时,为了进一步保证安全性,越来越多的网站开始采用动态生成的图形码或附加码进行验证.验证码技术就是在服务器端生成一个随机数,并将其保存在内存中,然后将随机数写入设计好的图片中,发送给浏览器,并以图片形式显示给最终用户.前几天,在完成一个利用Script进行用户注册及登录的验证时,在加入验证码这一块的时候,发现了各种生成验证码的方式,就利用空余时间做了一个整理及重写.那么我的博客之旅就从这篇验证码的生成开始了. 下面主要是几种不同的生成验证码的方式: 1.绘制纯数字的网站验证码 本实

C#简单生成缩略图的方法

本文实例讲述了C#简单生成缩略图的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理路径)</param> /// <para

【转】MVC4验证用户登录特性实现方法

在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AuthorizeAttribute : FilterAttribute, IAuthorizationF

python直接生成exe的方法

一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序.py2exe是发布在开源许可证下的.目前只有python2.x的才有对应版本的.二.安装py2exe 从http://prdownloads.sourc

用原始方法解析复杂字符串,json一定要用JsonMapper么?

转自数据之巅原文用原始方法解析复杂字符串,json一定要用JsonMapper么? 阅读目录 1.不规则非json字符串 2.键值对字符串分割函数 3.复杂Json格式的字符串 4.标准的json格式 5.总结 经常采集数据,肯定会碰到解析字符串,包括整个页面的html,或者json以及一些不标准的json格式... 以前用json序列化,有时候需要实体类,有的时候没有,比较麻烦,听说可以用JsonMapper,解析为字典格式.不过没用过,习惯了用最原始的方法来解析字符串,所以这里分享几个解析的

JavaScript随机生成颜色的方法

JavaScript随机生成颜色的方法 这篇文章主要介绍了JavaScript随机生成颜色的方法的相关资料,非常不错,代码简单易懂,具有参考借鉴价值,需要的朋友可以参考下 废话不多说了直接给大家贴js代码了,具体代码如下所述: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <!DOCTYPE html> <html>

Java项目 使用MyEclipse打包生成jar文件方法

使用MyEclipse打包生成jar文件方法 1.  鼠标右键单击要打包的项目 2.  在打开的窗口中选择对应的项目,(java 普通程序对应java:web项目对应) 3. 4.默认设置 点击Next 5. 6. 7. 8.文件打包完成:

在WPF下快速生成线的方法

如果线较多时,在画布中用Path或Line生成时会比较慢.用DrawingVisual可以快速生成,这个在之前我的博客中已经提到.但在类库形式下生成的无法看到,保存成Image后再加入图层后成功显示.   DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); Pen pen = new Pen(Brushes.DarkGray,

.net又一个生成缩略图的方法,不变形

生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 1 /// <summary> 2 /// 为图片生成缩略图 by 何问起 3 /// </summary> 4 /// <param name="phyPath">原图片的路径</param> 5 /// <param name="width">缩略图宽</param> 6 ///