java生成验证码,可刷新
来源:互联网 发布:国信软件 编辑:程序博客网 时间:2024/06/07 01:27
code.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
- <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
- <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
- <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
- <html>
- <head>
- < http-equivhttp-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>验证码</title>
- </head>
- <body>
- <html:img page="/code.do" border="0" 这里写单击事件onclic k="this.src='/lookctrl/code.do'" alt="请输入此验证码,如看不清请点击刷新。" style="cursor:pointer" />
- </body>
- </html>
CodeAction.java
- package struts.action;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.util.Random;
- import javax.imageio.ImageIO;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import org.apache.commons.lang.RandomStringUtils;
- /**
- * MyEclipse Struts Creation date: 08-2-2008
- *
- * XDoclet definition:
- *
- * @struts.action validate="true"
- */
- public class CodeAction extends Action {
- /*
- * Generated Methods
- */
- /**
- * Method execute
- *
- * @param mapping
- * @param form
- * @param request
- * @param response
- * @return ActionForward
- */
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- try {
- int width = 50;
- int height = 18;
- // 取得一个4位随机字母数字字符串
- String s = RandomStringUtils.random(4, true, true);//这个s的值就是页面验证码上显示的值
- // 保存入session,用于与用户的输入进行比较.
- // 注意比较完之后清除session.
- HttpSession session = request.getSession(true);
- session.setAttribute("validateCode", s);
- response.setContentType("images/jpeg");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
- ServletOutputStream out = response.getOutputStream();
- BufferedImage image = new BufferedImage(width, height,
- BufferedImage.TYPE_INT_RGB);
- Graphics g = image.getGraphics();
- // 设定背景色
- g.setColor(getRandColor(200, 250));
- g.fillRect(0, 0, width, height);
- // 设定字体
- Font mFont = new Font("Times New Roman", Font.BOLD, 18);// 设置字体
- g.setFont(mFont);
- // 画边框
- // g.setColor(Color.BLACK);
- // g.drawRect(0, 0, width - 1, height - 1);
- // 随机产生干扰线,使图象中的认证码不易被其它程序探测到
- g.setColor(getRandColor(160, 200));
- // 生成随机类
- Random random = new Random();
- for (int i = 0; i < 155; i++) {
- int x2 = random.nextInt(width);
- int y2 = random.nextInt(height);
- int x3 = random.nextInt(12);
- int y3 = random.nextInt(12);
- g.drawLine(x2, y2, x2 + x3, y2 + y3);
- }
- // 将认证码显示到图象中
- g.setColor(new Color(20 + random.nextInt(110), 20 + random
- .nextInt(110), 20 + random.nextInt(110)));
- g.drawString(s, 2, 16);
- // 图象生效
- g.dispose();
- // 输出图象到页面
- ImageIO.write((BufferedImage) image, "JPEG", out);
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- private Color getRandColor(int fc, int bc) { // 给定范围获得随机颜色
- Random random = new Random();
- if (fc > 255)
- fc = 255;
- if (bc > 255)
- bc = 255;
- int r = fc + random.nextInt(bc - fc);
- int g = fc + random.nextInt(bc - fc);
- int b = fc + random.nextInt(bc - fc);
- return new Color(r, g, b);
- }
- }
- java生成验证码,可刷新
- c#生成验证码 点击可刷新
- J2EE动态生成验证码可刷新
- asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- [转]asp.net(c#)生成验证码 点击可刷新
- asp.net(c#)生成验证码 点击可刷新
- php生成验证码,点击可刷新的实例
- Servlet生成验证码在JSP页面显示,单击验证码图片可刷新
- Java Swing 图形界面实现验证码(验证码可动态刷新)
- 【Java】Swing 图形界面实现验证码(验证码可动态刷新)
- java验证码刷新
- asp.net可刷新的验证码
- java实现网页的验证码的改良版(火狐可点击刷新)
- jsp验证码生成以及刷新
- 验证码的生成与刷新
- 验证码生成 点击刷新 ajax校验
- attribute 用法 section 部分
- 韩国风随机播放焦点广告
- 认识django2.0读书笔记(6)---第六章Django 站点管理
- 网络多线程 异步 同步处理
- Android TextView文字过多,添加滚动条
- java生成验证码,可刷新
- 嵌入式arm学习总结(三)--IIC 基于AT24C02
- Ubuntu 12.04.3 终端出现 Permission denied 解决方法
- 表(Table)和段(Segment)之间是什么关系
- android-universal-image-loader
- vector 使用说明
- Oracle大表更新
- grep 忽略大小写查找某一个路径下某一文件类型中的字符串
- 使用 mysqlsla 分析mysql 慢查询日志