`
huttoncs
  • 浏览: 200848 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

字母校验码

阅读更多
1、jsp中队校验码的引用代码片段如下:
<tr>
<td align="right" > </td>
<td align="right" height="30">
<label for="verifyCode" class="yonghuming_font">
                                          验证码:
                            </label>
</td>
<td height="30">
                                   <input type="text" id="verifyCode" name="verifyCode" size="6" />
                                   <img alt="验证码" id="safecode" src="<%=context %>/servlet/ImageServlet">
                                   看不清楚
</td>
</tr>

2、javascript中(写在js文件中也是一样的)刷新图片的方法代码片段如下:
function reloadVerifyCode(){
       var timenow = new Date().getTime();                       
       document.getElementById("safecode").src="<%=request.getContextPath()%>/servlet/ImageServlet?d="+timenow;

   }

3、xml文件中对图片servlet的配置,代码片段如下:
<!-- 校验码servlet -->
  <servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>ssh.init.ImageServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/servlet/ImageServlet</url-pattern>
  </servlet-mapping>

4、图片servlet代码如下:
package ssh.init;


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
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;

@SuppressWarnings("serial")
public class ImageServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("*****************  random picture created  ****************");
this.doPost(request, response);

}

// 生成数字和字母的验证码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// System.out.println("request path="+request.getContextPath());
//创建一个位于缓冲区的图片,长为68,高为22
BufferedImage img = new BufferedImage(68, 22,BufferedImage.TYPE_INT_RGB);
// 得到该图片的绘图对象
Graphics g = img.getGraphics();
Random r = new Random();
Color c = new Color(200, 150, 255);
g.setColor(c);
// 填充整个图片的颜色
g.fillRect(0, 0, 68, 22);
// 向图片中输出数字和字母
StringBuffer sb = new StringBuffer();
// char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
char[] ch = "abcdefghijklmnopqrstuvwxyz".toCharArray();
int index, len = ch.length;
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.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 18)); // 输出的字体和大小
g.drawString("" + ch[index], (i * 15) + 3,  18);
// 写什么数字,在图片的什么位置画
sb.append(ch[index]);
}
request.getSession(true).setAttribute("piccode", sb.toString());
ImageIO.write(img, "JPG", response.getOutputStream());

}


@SuppressWarnings("unused")
private void writeLog(String msg){
File f = new File("E:/Program Files/tomcat6.0.20/webapps/ROOT/temp.log");
if(!f.exists()){
try {
f.createNewFile();
} catch (IOException e) {

e.printStackTrace();
}
}
BufferedWriter output = null;
try {
output = new BufferedWriter(new FileWriter(f));
} catch (IOException e) {

e.printStackTrace();
}
try {
output.write(msg);
} catch (IOException e) {

e.printStackTrace();
}
try {
output.close();
} catch (IOException e) {

e.printStackTrace();
}

}

}

5、接受登录请求的Action对校验码处理的代码片段如下:
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
/**
* 验证码校验
* */
String icp = (String) session.getAttribute("piccode");
if (icp==null && !Tools.isEmpty(verifyCode)){
icp = verifyCode;
}
if(Tools.isEmpty(verifyCode)|| !icp.equalsIgnoreCase(verifyCode)){
request.setAttribute("errMessage","验证码错误,请重新输入");
return LOGIN;
}
if (!Tools.isEmpty(icp) && !Tools.isEmpty(verifyCode)) {
if (!verifyCode.equalsIgnoreCase(icp)) {
request.setAttribute("errMessage","验证码错误,请重新输入");
return LOGIN;
}
}

6、工具类Tools的代码如下:
package ssh.comm.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class Tools
{

    public Tools()
    {
    }

    public static boolean isEmpty(String str)
    {
        return str == null || str.trim().length() == 0;
    }

    public static boolean isEmpty(Object obj_str)
    {
        return obj_str == null || isEmpty(obj_str.toString());
    }

    public static boolean isEmpty(Object objs[])
    {
        return objs == null || objs.length == 0;
    }

    public static boolean isEmpty(String strs[])
    {
        if(strs == null)
            return true;
        String as[] = strs;
        int i = 0;
        for(int j = as.length; i < j; i++)
        {
            String str = as[i];
            if(str == null || str.trim().length() == 0)
                return true;
        }

        return false;
    }

    @SuppressWarnings("unchecked")
public static boolean isEmpty(Map map)
    {
        return map == null || map.isEmpty();
    }

    @SuppressWarnings("unchecked")
public static boolean isEmpty(Collection c)
    {
        return c == null || c.isEmpty();
    }

    public static boolean equals(Object src, Object dest)
    {
        if(src != null)
            return src.equals(dest);
        return src == dest;
    }

    public static boolean notEquals(Object src, Object dest)
    {
        return !equals(src, dest);
    }

    public static long getTodayDate()
    {
        Date nowDate = new Date();
        String nDate = (new SimpleDateFormat("yyyyMMddHHmmss")).format(nowDate);
        long endDate = Long.parseLong(nDate);
        return endDate;
    }

    public static String formatDateTime(String dateTime)
    {
        if(!isEmpty(dateTime))
            return dateTime.replaceAll(":", "").replaceAll("-", "").replaceAll(" ", "");
        else
            return dateTime;
    }

    public static Date stringToDate(String dateTime)
        throws ParseException
    {
        Date date = null;
        if(!isEmpty(dateTime))
        {
            SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
            date = dateformat.parse(dateTime);
            return date;
        } else
        {
            return date;
        }
    }

    public static String getStringDate()
        throws ParseException
    {
        Date currentTime = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        return dateString;
    }

    @SuppressWarnings("unchecked")
public static String[] quChu(String arr[])
    {
        List list = new ArrayList();
        for(int i = 0; i < arr.length; i++)
            if(!list.contains(arr[i]))
                list.add(arr[i]);

        return (String[])list.toArray(new String[list.size()]);
    }

    public static String validateToStr(Object obj)
    {
        return obj != null ? obj.toString().trim() : "";
    }
}

0
0
分享到:
评论
1 楼 桃花源记 2013-03-18  
正在找这个!

相关推荐

    16进制和ASCII码校验码计算工具

    在IT领域,校验码是一种用于检测数据传输错误或存储媒介错误的重要技术。"16进制和ASCII码校验码计算工具"是一款专门用于计算校验码的实用程序,它能够帮助用户验证数据的完整性和准确性。下面将详细介绍这款工具...

    程序登录加上校验码for PB9,PB125支持中文校验码

    这种安全措施涉及到两种类型的校验码:一种是包含数字、字母和汉字的文字校验码,另一种是拖拉式图片校验码。这两种校验码都是为了防止自动化的恶意登录尝试,如机器人或脚本,从而保护用户账户的安全。 文字校验码...

    java校验密码重复的代码

    因此,此正则表达式的作用是校验密码长度在8到31个字符之间,并且只包含字母、数字和下划线。 #### 2. 使用Pattern和Matcher类 为了应用上述正则表达式,代码中使用了Java中的`Pattern`和`Matcher`类。 - **...

    身份证校验码查询工具

    身份证校验码,也称为身份证号码的最后一位校验位,是用于确保身份证号码正确性的关键部分。在中华人民共和国居民身份证中,这个校验码是由前17位数字经过特定算法计算得出的,用于验证整个身份证号码的合法性。在本...

    ASP.NET程序中实现校验码图像生成.rar

    校验码通常是一串随机的字母或数字,与图片结合,用户需要输入看到的验证码文字以证明其是人而不是机器。 在这个"ASP.NET程序中实现校验码图像生成.rar"压缩包中,包含了一个实现这一功能的示例。主要涉及以下几个...

    VFP中身份证号码最后一位的校验码的算法

    校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 公式如下:  ∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (1)  "*" 表示乘号  i--------表示身份证号码每一位的序号,从右...

    VIN校验计算.rar_VIN计算_frame vin_获取车辆车架号校验码_车架号效验_车架号计算

    如果余数为其他值,则校验位为11减去余数,得到的结果是字母或数字。例如,如果总和模11的余数为2,那么校验位就是11 - 2 = 9。 在实际应用中,这个计算过程通常被编程实现,以便快速准确地验证VIN。在提供的“VIN...

    校验码源码

    提供网站登录时需要设置的校验码源码,程序员可依据此源码设计出4个字母或数字的校验码生成器!

    Android-生成带校验码的卡号

    在Android开发中,生成带校验码的卡号是一个常见的需求,这涉及到一系列与数据处理、安全性以及性能优化相关的技术。本文将详细讲解如何在Android环境中实现这些功能,并结合提供的"ID-generator-master"压缩包文件...

    一个完整身份证效验程序 。公民身份号码是特征组合码18位:由十七位数字本体码和一位数字校验码组成。

    - 求和结果除以11,得到的余数对应于1到10或者X的校验码值,如果余数为0,则校验码为10,但为了保持18位,用罗马字母X表示。 3. **身份证验证程序的功能**: - 验证号码长度:确保输入的号码是18位。 - 检查...

    奇偶校验码(25页).pdf

    本文将深入探讨数制与码制,并专门阐述奇偶校验码的基本原理及其在错误检测中的应用。 首先,我们需要明确数制和码制的定义。数制,或称数字系统,是用来表示数字的一套符号体系。常见的数制包括我们日常生活中使用...

    js 校验密码重复的代码

    - `\w`:匹配任何字母数字字符,等价于 `[a-zA-Z0-9_]`。 - `{n,m}`:指定匹配前面的表达式的最小和最大次数。 ### 二、密码强度验证 #### 2.1 验证密码长度 给定代码中的正则表达式 `new RegExp("^\\w{8,31}$")` ...

    JavaScript 校验密码强度

    例如,一个简单的正则表达式可以检查密码是否至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符: ```javascript var password = "YourPassword"; var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@...

    C++身份证号码校验

    4. **校验码**:最后一位数字或大写字母X作为校验码,用于验证前面17位数字的有效性。 ### 二、校验码计算方法 校验码的计算方法如下: 1. 将前17位数字与对应的权重相乘后求和。 - 权重数组为 [7, 9, 10, 5, 8,...

    java密码验证,大小写、字母、特殊字符

    在网上看到关于密码验证的资源,有一个40多分,简直坑爹,然后自己在网上找到了一个资源,修改了一下就可以用了,里面包含大小写、数字、特殊字符、四个都有,每一个有一个就可以了,然后去验证就行了,java,...

    密码格式校验js

    5、密码中不能包含有连续四位及以上重复字符(含:大写字母、小写字母、数字、特殊符号),字母不区分大小写;(如:密码中不能包含8888、9999、aaaa 或AAAA或BbbB或 $$$$等四位及以上的重复字符)。 6、不区分大小写...

    Vin校验码计算源码.rar

    这个压缩包“Vin校验码计算源码.rar”包含了VB6(Visual Basic 6)编程语言编写的源代码,用于根据标准方法计算和验证VIN码。 在汽车行业中,VIN码扮演着至关重要的角色,因为它包含了关于车辆制造厂商、生产年份、...

    奇偶校验吗

    ### 奇偶校验码概述 #### 一、什么是奇偶校验码? 奇偶校验码是一种基本且常见的检错技术,广泛应用于数据通信和存储系统中,以确保数据传输过程中的完整性。该技术通过增加一个额外的校验位来实现对原始数据的校验...

    C#验证密码不能含有键盘连续字母

    正则表达式可以用来检测字符串是否符合特定的规则,比如在这里,我们需要检查密码是否包含了连续的字母或数字。在C#中,我们可以创建一个正则表达式来识别这些模式,并在用户尝试设置新密码时进行验证。 以下是一个...

Global site tag (gtag.js) - Google Analytics