使用java生成VerifyCode

VerifyCode.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="UTF-8" %>
<%!
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);}
%>
<%
try
{
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);out.println("01 _  verifyCode has created!!!");String verifyCode = "9657";//(String)request.getSession().getAttribute(SessionConstant.LOGIN_USER_VERIFYCODE);
//End Modify // 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取图形上下文
Graphics g = image.getGraphics();//生成随机类
Random random = new Random();// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{int x = random.nextInt(width);int y = random.nextInt(height);int xl = random.nextInt(12);int yl = random.nextInt(12);g.drawLine(x,y,x+xl,y+yl);
}String num = "";
for (int i=0;i<4;i++){num = verifyCode.substring(i, i+1);// 将认证码显示到图象中g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成g.drawString(num,13*i+6,16);
}// 图象生效
g.dispose();
// 输出图象到页面
ServletOutputStream os = response.getOutputStream();
ImageIO.write(image, "JPEG", os);
out.println("verifyCode has created!!!");
//加上后面的几句就是为了解决抛出的异常IllegalStateException
os.flush();
os.close();
os=null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
}
catch(Exception ex)
{out.println("Exception:" + ex.toString());
}%>

调用方法:在需要调用VerifyCode的页面使用<image src="VerifyCode.jsp"/>即可

Create VerifyCode by jsp of java相关推荐

  1. jsp与java的关系_jsp教程中:jsp与servlet的区别和关系

    jsp教程上:我们一定学了servlet,也学习了jsp,那么jsp与servlet的区别是什么呢,jsp与servlet又有什么关系呢?下面我们先创建一个demo.jsp的页面,然后tomcat运行 ...

  2. JSP是不是Java发展史上的一大败笔?

    JSP一个年代传奇人物,它的诞生成果了网络的三国鼎立的局势,可是,几年的结构的风烟席卷,让JSP逐渐淡出这个前史舞台,有人不由宣布这样的感叹,JSP是不是Java开展史上的一大败笔呢? 查询样本 让咱 ...

  3. jsp里面java和js交互_jsp与js交互实例 | 学步园

    使用jsp(就是java代码)拼js脚本: lefthead.jsp String basepath = request.getContextPath()+"/"; String ...

  4. JSP 调用java 常量 枚举

    JSP 调用java 常量 枚举 JAVA:public enum ReimStatus {UNCONFIRMED ("118001"), //未确认 DISPATCH_VERIF ...

  5. 看样子还是:JSP和JAVA

    开发神器: JSP,JAVA MYSql ,hadoop

  6. JavaWeb(八)——JSP(Java服务器端页面)

    文章目录 1. JSP定义 2. JSP原理 3. JSP基础语法 4. JSP指令 5. 九大内置对象 6. JSP标签.JSTL标签.EL表达式 1. JSP定义 Java Server Page ...

  7. jsp和java使用值_如何将表单的值从jsp发送到Java

    我有一个包含30个不同字段的表格.将它们全部传递给控制器​​时,需要为每个属性都具有一个属性,以及一对getter,setter. 我将使表单字段作为一个对象并将该对象发送到控制器. 我正在使用以下代 ...

  8. JSP:Java Server Page(1)

    JSP:Java Server Page JSP的本质:Jsp是一种动态网页技术! 动态生成网页数据,而不是有动态效果的网页!--动态效果用JavaScript实现 常见的几种动态网页技术:jsp.A ...

  9. 使用Servlet和JSP开发Java应用程序 ----错误处理

    使用Servlet和JSP开发Java应用程序 ----错误处理 错误和异常处理 配置错误页面 针对异常配置错误页面 使用 Servlet 配置错误页面 自己指定发送的状态代码 setStatus() ...

  10. 使用Servlet和JSP开发Java应用程序 ---- 查询四六成绩

    使用Servlet和JSP开发Java应用程序 ---- 查询四六成绩 1. HTML页面 2. Servlet编写 3. Web.xml配置,进行注册Servlet 4. 完整程序的页面 1. HT ...

最新文章

  1. 内存分配器设计的演进
  2. 深度剖析WinPcap之(九)——数据包的发送过程(12)
  3. python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目
  4. linux CMA使用机制分析--基于SigmaStar SSD202
  5. idea中使用jrebel
  6. 【渝粤教育】国家开放大学2018年春季 7405-21T面向对象程序设计(本) 参考试题
  7. easy html css tree 简单的HTML css导航树
  8. 多线程编程学习总结(转载)
  9. 摇一摇事件封装了设备的运动传感器
  10. python内置函数open_Python学习教程:Python内置函数大总结(下篇)
  11. python xml.etree.ElementTree
  12. Asp.Net中的三种分页方式总结
  13. Android开发入门教程--3.Activity入门指南
  14. 计算机网络-交换机配置
  15. centos mysql 安装 innodb_centos 6下安装innodb_ruby
  16. Gambit学习2-曲面挖洞
  17. 【C语言】数组名地址与数组首元素地址区别(实例分析)
  18. android----面试基础概括总结
  19. emv交易流程介绍,简易波动指标EMV基础知识介绍:EMV的计算公式_EMV应用法则
  20. ansible管理界面_Ansible和Google日历集成,用于变更管理

热门文章

  1. 内存卡无法格式化 修复
  2. Java考试系统题目和选项乱序实现
  3. oracle 创建表格乱码,数据库导出excel表格是乱码怎么办-oracle 导出excel 乱码怎么办...
  4. 优词词根词典mdx_中外英语词典223种(Txt格式)免费分享
  5. ROS语音识别科大讯飞语音SDK
  6. 科大讯飞语音合成python版
  7. 嵌入式linux系统移植的四大步骤_基于ARM的Linux系统移植的方法
  8. 新塘单片机烧写器_NuMicro ICP Programming Tool-ICP Programming Tool(新唐单片机烧录工具)下载 v3.00.6909官方版--pc6下载站...
  9. 汇川plc c语言,汇川plc编程软件-汇川plc编程软件autoshop下载 v2.92官方版--pc6下载站...
  10. python 通达信函数_python调用通达信公式,大智慧公式转python