用JSP文件生成网站验证码

<%@ page autoFlush="false"  import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%> <%@ page import="org.apache.commons.lang.RandomStringUtils"%> <%  RandomStringUtils rs=new RandomStringUtils(); String random=rs.randomAlphanumeric(4); session.setAttribute("random",random);  %> <%

out.clear();         response.setContentType("image/jpeg");         response.addHeader("pragma","NO-cache");         response.addHeader("Cache-Control","no-cache");         response.addDateHeader("Expries",0);         int width=100, height=40;         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);         Graphics g = image.getGraphics();         //以下填充背景?色         g.setColor(Color.GRAY);         Font DeFont=new Font("SansSerif", Font.PLAIN, 32);          g.setFont(DeFont);         g.fillRect(0, 0, width, height);        //?置字体?色         g.setColor(Color.RED);         g.drawString(random,3,30);         g.dispose();         ServletOutputStream outStream = response.getOutputStream();         JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);         encoder.encode(image);         outStream.close();    %>
test.jsp文件代码如下: <%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head>

<body> <img src="random.jsp">  </body> </html>
如果不想导入Apache的包可以自己编译下面这个文件 // FrontEnd Plus GUI for JAD // DeCompiled : RandomStringUtils.class

package org.apache.commons.lang;

import java.util.Random;

public class RandomStringUtils {

private static final Random RANDOM = new Random();

public RandomStringUtils()     {     }

public static String random(int count)     {         return random(count, false, false);     }

public static String randomAscii(int count)     {         return random(count, 32, 127, false, false);     }

public static String randomAlphabetic(int count)     {         return random(count, true, false);     }

public static String randomAlphanumeric(int count)     {         return random(count, true, true);     }

public static String randomNumeric(int count)     {         return random(count, false, true);     }

public static String random(int count, boolean letters, boolean numbers)     {         return random(count, 0, 0, letters, numbers);     }

public static String random(int count, int start, int end, boolean letters, boolean numbers)     {         return random(count, start, end, letters, numbers, null);     }

public static String random(int count, int start, int end, boolean letters, boolean numbers, char set[])     {         if(start == 0 && end == 0)         {             end = 122;             start = 32;             if(!letters && !numbers)             {                 start = 0;                 end = 0x7fffffff;             }         }         StringBuffer buffer = new StringBuffer();         int gap = end - start;         while(count-- != 0)          {             char ch;             if(set == null)                 ch = (char)(RANDOM.nextInt(gap) + start);             else                 ch = set[RANDOM.nextInt(gap) + start];             if(letters && numbers && Character.isLetterOrDigit(ch) || letters && Character.isLetter(ch) || numbers && Character.isDigit(ch) || !letters && !numbers)                 buffer.append(ch);             else                 count++;         }         return buffer.toString();     }

public static String random(int count, String set)     {         return random(count, set.toCharArray());     }

public static String random(int count, char set[])     {         return random(count, 0, set.length - 1, false, false, set);     }

}

时间: 2024-10-14 01:19:37

用JSP文件生成网站验证码的相关文章

jsp中生成的验证码和存在session里面的验证码不一致的处理

今天在调试项目的时候发现,在提交表单的时候的验证码有问题,问题是这样的:就是通过debug模式查看得知:jsp页面生成的验证码和表单输入的页面输入的一样,但是到后台执行的时候,你会发现他们是不一样的,现在上图看看: 1.这是表单提交的时候: 2.这是后台得到的生成的验证码: 3.这是后台得到输入的验证码: 这样的问题还是头一次出现,以前没遇到过,经过google,baidu,最后得知是这样的:因为加载jsp页面比加载session快一些 那怎么办才能解决这个办法呢, 又经过多次搜索,思考,实践,

过滤器为JSP文件生成静态页面

用过滤器为JSP文件生成静态页面,这只是一个简单的实例,客户端浏览器第一次请求JSP页面时,服务器将生成对应的HTML文件,以后访问同一JSP文件,将转为访问生成的HTML文件.一.过滤器 package com.kenfor.lyb.toHtmlfilter; import java.io.*; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.s

动态Jsp文件生成对应Html文件

1.在 index.jsp文件中,加入一条超链接,用来访问将 Jsp 转换成Html的servlet <a href="servlet/GeneraticServlet">把template文件夹下的jsp都生成静态html文件</a> 2. 在项目根目录下新建一个template文件夹,将要转换成静态html的 jsp页面放入,我新建的的文件为MyJsp1.jsp, MyJsp2.jsp, MyJsp3.jsp, 内容类似 <body> 这是第&l

JSP动态生成验证码

(1)在登录应用中,为防止恶意登录,常常需要服务器动态生成验证码并存储在session作用范围中,最后以图像形式返回给客户端显示 (2)下边的代码实现的功能:写一个JSP页,动态生成一个验证码,存储在session作用范围内,并以图像形式返回给客户端显示. 另写一个JSP页面,引用此JSP页面生成的验证码: authen.jsp代码如下: <%@ page import="java.awt.*,java.awt.image.*,java.util.*,com.sun.image.codec

java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":&qu

在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码

只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这个js函数,使其动态生成一个新的验证码,这个函数中的参数t=Math.random()并不会参与验证码的生成,它的作用仅仅只是表示每次提交的并不是同一个请求,需要单独处理,完整的login.jsp代码如下: <%@ page language="java" contentType=&

Asp.Net 生成网站时不生成.pdb文件

Asp.Net默认情况下生成网站发布时,打开Bin文件夹,每个类库会对应生成一个类库名.pdb文件... .pdb是用来放置VS的调试信息的,项目发布后可以删除它. 右键点击类库项目,在属性里.生成,点高级,调试信息默认是 full ,你可以选择成 none,就是不调试.保存就可以了. 原文转载 http://www.dyxue.com/tech/id2547.html Asp.Net 生成网站时不生成.pdb文件,布布扣,bubuko.com

JSP+servlet生成验证码并验证

生成验证码的基本过程是: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="java.awt.*,java.awt.image.BufferedImage,javax.imageio.ImageIO" %> <% response.setHeader("Cache-C

jsp动态生成验证码详细代码

思路:页面加载时执行fnGetcode()方法,获取验证码所有信息:点击“点击图片更换” 再次执行fnGetcode()方法: 1):<body > <label>         验证码:         <input id="showco" type="hidden" value=""/>         <input type="text" id="code"