字母校验码

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() : "";
    }
}

你可能感兴趣的:(JavaScript,xml,jsp,servlet)