JSP实现验证码 代码怎么写?

作者&投稿:鄘秒 (若有异议请与网页底部的电邮联系)
jsp中显示验证码的代码怎么写?~

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import java.util.Random;import javax.imageio.ImageIO;/*生成验证码图片*/public class MakeCertPic { //验证码图片中可以出现的字符集,可以根据需要修改 private char mapTable[]={ 'a','b','c','d','e','f', 'g','h','i','j','k','l', 'm','n','o','p','q','r', 's','t','u','v','w','x', 'y','z','0','1','2','3', '4','5','6','7','8','9' };/* 功能:生成彩色验证码图片 参数wedth为生成图片的宽度,参数height为生成图片的高度,参数os为页面的输出流*/ public String getCertPic(int width,int height,OutputStream os){ if(width下边是登录页面:验证码测试登录页面 function changeimg(){var myimg = document.getElementById("code"); now = new Date(); myimg.src="makeCertPic.jsp?code="+now.getTime();} 用户名: 密 码: 验证码: 看不清,换一张

javascript实现点击验证码无刷新重新加载验证码图片
在需要使用验证码的网页javascript:;" onClick="javascript:tagshow(event, '%E6%96%87%E4%BB%B6');" target="_self">文件头部加上这句

function reloadcode(){
var verify=document.getElementById('safecode');
verify.setAttribute('src','images/chknumber.asp?'+Math.random());
//这里必须加入随机数不然地址相同我发重新加载
}



然后再验证码图片里面写onclick呼出上面的函数重新加载.


<%@pagecontentType=\"image/jpeg\"import=\"java.awt.*,java.awt.image.*,java.util.*,javax.imageio.* \"%> <%! //createbysmallnest //email:smallnest@gmail.com //website: www.kuaff.com //生成随机颜色 ColorgetRandColor(Randomrandom,intfc,intbc)...{ if(fc>255)fc=255; if(bc>255)bc=255; intr=fc+random.nextInt(bc-fc); intg=fc+random.nextInt(bc-fc); intb=fc+random.nextInt(bc-fc); returnnewColor(r,g,b); } %> <% //设置页面不缓存 response.setHeader(\"Pragma\",\"No-cache\"); response.setHeader(\"Cache-Control\",\"no-cache\"); response.setDateHeader(\"Expires\",0); //设置图片的长宽 intwidth=176,height=30; //设置备选汉字,剔除一些不雅的汉字 Stringbase=\"的一了是我不在人们有来他这上着个地到大里说就去子得也和那要下看天时过出小么起你都把好 还多没为又可家学只以主会样年想生同老中十从自面前头道它后然走很像见两用她国动进成回什边作对开而己 些现山民候经发工向事命给长水几义三声于高手知理眼志点心战二问但身方实吃做叫当住听革打呢真全才四已 所敌之最光产情路分总条白话东席次亲如被花口放儿常气五第使写军吧文运再果怎定许快明行因别飞外树物活 部门无往船望新带队先力完却站代员机更九您每风级跟笑啊孩万少直意夜比阶连车重便斗马哪化太指变社似士 者干石满日决百原拿群究各六本思解立河村八难早论吗根共让相研今其书坐接应关信觉步反处记将千找争领或 师结块跑谁草越字加脚紧爱等习阵怕月青半火法题建赶位唱海七女任件感准张团屋离色脸片科倒睛利世刚且由 送切星导晚表够整认响雪流未场该并底深刻平伟忙提确近亮轻讲农古黑告界拉名呀土清阳照办史改历转画造嘴 此治北必服雨穿内识验传业菜爬睡兴形量咱观苦体众通冲合破友度术饭公旁房极南枪读沙岁线野坚空收算至政 城劳落钱特围弟胜教热展包歌类渐强数乡呼性音答哥际旧神座章帮啦受系令跳非何牛取入岸敢掉忽种装顶急林 停息句区衣般报叶压慢叔背细\"; [Page] //备选汉字的长度 intlength=base.length(); //创建内存图像 BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //获取图形上下文 Graphicsg=image.getGraphics(); //创建随机类的实例 Randomrandom=newRandom(); //设定图像背景色(因为是做背景,所以偏淡) g.setColor(getRandColor(random,200,250)); g.fillRect(0,0,width,height); //备选字体 String[]fontTypes=...{ \"宋体\",\"新宋体\",\"黑体\",\"楷体\",\"隶书\"}; intfontTypesLength=fontTypes.length; //在图片背景上增加噪点 g.setColor(getRandColor(random,160,200)); g.setFont(newFont(\"TimesNewRoman\",Font.PLAIN,14)); for(inti=0;i<6;i++)...{ g.drawString(\"*********************************************\",0,5*(i+2)); } //取随机产生的认证码(6个汉字) //保存生成的汉字字符串 StringsRand=\"\"; for(inti=0;i<6;i++)...{ intstart=random.nextInt(length); Stringrand=base.substring(start,start+1); sRand+=rand; //设置字体的颜色 g.setColor(getRandColor(random,10,150)); //设置字体 g.setFont(newFont(fontTypes[random.nextInt(fontTypesLength)],Font.BOLD,18+random.nextInt(6))); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 很多新手对图片验证码不是很了解,今天我们就来看看一个实例吧,首先,先写一个动态图片生成的Servlet类,如下: package org.yuanliang; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class RandomCode extends HttpServlet { private static final long serialVersionUID = 1L; private static int WIDTH = 65;//设置图片的宽度 private static int HEIGHT = 22;//设置图片的高度 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); response.setContentType(\"image/jpeg\"); ServletOutputStream sos = response.getOutputStream(); response.setHeader(\"Pragma\", \"No-cache\"); response.setHeader(\"Cache-Control\", \"no-cache\"); response.setDateHeader(\"Expires\", 0); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); char[] rands = generateCheckCode(); drawBackground(g); drawRands(g, rands); g.dispose(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageIO.write(image, \"JPEG\", bos); byte[] buf = bos.toByteArray(); response.setContentLength(buf.length); sos.write(buf); bos.close(); sos.close(); session.setAttribute(\"randomCode\", new String(rands)); } private void drawBackground(Graphics g) { g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, WIDTH, HEIGHT); for (int i = 0; i < 120; i++) { int x = (int) (Math.random() * WIDTH); int y = (int) (Math.random() * HEIGHT); int red = (int) (Math.random() * 255); int green = (int) (Math.random() * 255); int blue = (int) (Math.random() * 255); g.setColor(new Color(red, green, blue)); g.drawOval(x, y, 1, 0);[Page] } } private void drawRands(Graphics g, char[] rands) { // g.setColor(Color.BLUE); Random random = new Random(); int red = random.nextInt(110); int green = random.nextInt(50); int blue = random.nextInt(50); g.setColor(new Color(red, green, blue)); g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18)); g.drawString(\"\" + rands[0], 1, 17); g.drawString(\"\" + rands[1], 16, 15); g.drawString(\"\" + rands[2], 31, 18); g.drawString(\"\" + rands[3], 46, 16); } private char[] generateCheckCode() { String chars = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"; char[] rands = new char[4]; for (int i = 0; i < 4; i++) { int rand = (int) (Math.random() * 36); rands[i] = chars.charAt(rand); } return rands; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } OK!!!保存为RandomCode.java吧,然后进行编译,生成RandomCode.class文件,放到WEB-INF/classes/org/yuanliang目录下; 然后在WEB-INF目录下建立web.xml,添加Servlet配置: jsp验证码生成以及刷新 关于jsp验证码生成,显示,验证和刷新: 1:四位数据的验证图片生成,用servlet实现 2: 在web.xmlli配置servlet 3:页面上显示servlet生成的图片 4: 关于验证码输入数据的验证 5: 验证码的刷新 ——————————————————————– 1:四位数据的验证图片生成,用servlet实现,servlet代码如下: import java.io.*; import javax.servlet.http.*; import javax.servlet.*; import java.util.*; import java.awt.*; import java.awt.image.*; import javax.imageio.*; public class vImage extends HttpServlet { public void init(ServletConfig conf) throws ServletException { super.init(conf); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType(”image/jpeg”); res.setHeader(”Pragma”, “No-cache”); res.setHeader(”Cache-Control”, “no-cache”); res.setDateHeader(”Expires”, 0); HttpSession session = req.getSession(); // 在内存中创建图象 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 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); } } 2: 在web.xmlli配置servlet: vImage /vimage 注:注意元素在web.xml文件里的位置 3:页面上显示servlet生成的图片: 注:在需要显示验证码的地方加上这句,name在刷新验证码的时候会用到。 4: 关于验证码输入数据的验证: 验证码生成时存入了session,就是servlet里的这句session.setAttribute(”post_validate_code”, sRand);具体验证就不多说了。 5: 验证码的刷新 刷新验证码 function reloadImage(url) { document.form名字.pic.src = url; } 前两个有时间参考 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

一个小示例看一下。。 验证码 code2.jsp <%@ page language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="gb2312"%> <%try{ response.setHeader("Pragma","no-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0); response.setContentType("image/jpeg"); int width = 80; int height = 20; char mapTable[] = {'0','1', '2', '3', '4', '5', '6', '7', '8', '9'}; BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); // 设定背景颜色 g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, width, height); //画边框 g.setColor(Color.black); g.drawRect(0, 0, width - 1, height - 1); // 随机产生的验证码 String strEnsure = ""; // 4代表4位验证码,如果要生成等多位的验证码 ,则加大数值 for (int i = 0; i < 5; i++) { strEnsure += mapTable[(int) (mapTable.length * Math.random())]; } // 将验证码显示在图像中,如果要生成更多位的验证码,增加drawString语句 g.setColor(Color.red); g.setFont(new Font("Atlantic Inline", Font.PLAIN, 18)); String str = strEnsure.substring(0, 1); g.drawString(str, 8, 17); str = strEnsure.substring(1, 2); g.drawString(str, 20, 15); str = strEnsure.substring(2, 3); g.drawString(str, 35, 18); str = strEnsure.substring(3, 4); g.drawString(str, 50, 15); str = strEnsure.substring(4, 5); g.drawString(str, 65, 18); // 随机产生10个干扰点 Random random = new Random(); for (int i = 0; i < 10; i++) { int x = random.nextInt(width); int y = random.nextInt(height); g.drawOval(x, y, 1, 1); } // 释放图形上下文 g.dispose(); session.setAttribute("yanzhengma",strEnsure);//将验证码写入到session ImageIO.write(image, "JPEG", response.getOutputStream()); out.clear(); }catch(Exception e){ response.sendRedirect("log.jsp"); }%> 在log.jsp里 验证 <input type="text" name="confirm" id="confirm" style="width:100px; height:25px;"/> <img id="yzm" src=code2.jsp alt="看不清"/><a href="#" class="STYLE2" onclick="javascript:document.getElementById('yzm').src='code2.jsp';return false;">看不清,换一张</a>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> //验证代码部分 <script language="JavaScript"> function abc() { if(form1.textfield.value=="") { window.alert("用户名不能为空!"); form1.textfield.focus(); //document.getElementById("textfield").focus(); return false; } else if(form1.textfield1.value=="") { window.alert("密码不能为空!"); form1.textfield1.focus(); return false; } } </script> </head> <body> <form name="form1" action="Default.aspx" method="get" > <table width="253" height="128" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="70">用户名:</td> <td width="183"><input type="text" id="textfield" value=""/></td> </tr> <tr> <td>密码:</td> <td><input type="password" id="textfield1" value=""/></td> </tr> <tr > <td colspan="2"> <input type="submit" value="提交" onclick="return abc()"/> <input type="reset" value="清空"/></td> </tr> </table> </form> </body> </html>


察雅县15334426060: jsp中显示验证码的代码怎么写? -
蓬养盐酸: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO;/*生成验证码图片*/ public ...

察雅县15334426060: 急求一个jsp中实现验证码的代码!要简单的! -
蓬养盐酸: 大致原理就是随即生成一段字符串,然后创建相应的图像,并加入噪点.然后将验证码写入session,图像写到客户端. LZ请hi我,然后给你发完整的Eclipse web project.

察雅县15334426060: jsp验证码是怎么实现? -
蓬养盐酸: 1 服务器端随机产生一串字符串,保存在缓存(session)中, 2 服务器端用程序自动生成一张图片,并把随机产生的字符串写在图片上, 3 把图片发送到浏览器端 4 浏览者把图片上看到的文字写到文本框里, 5 表单提交时,这些文字被发送到服务器端, 6 服务器端验证发送来的文字和保存在缓存(session)中的字符串是否一致,是则通过验证,否则为非法操作

察雅县15334426060: 求一个验证码程序,jsp
蓬养盐酸: 代码如下:(页面调用:<img src=img.jsp/> 后台session的名字:ccode) <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="UTF-8"%> <%! Color getRandColor(int fc,int ...

察雅县15334426060: 验证码源代码,jsp -
蓬养盐酸:int width = 60; int height = 20; // 创建具有可访问图像数据缓冲区的Image BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); // 创建一个随机数生成器 ...

察雅县15334426060: 有可以直接写在jsp页面中实现验证码的方法吗,求代码 -
蓬养盐酸: 你要这样理解jsp,它虽是用于展示的,但本质是java为基础的,在编译时都会被编译成servlet.所以,你的想法没有问题,完全可以用一个jsp来写好验证码,无非就是生成图形和随机数,然后由另一个jsp来调用.

察雅县15334426060: 用jsp做的登陆页面加一个验证码的功能,怎么实现?求高手指教,验证码要随机生成
蓬养盐酸: 代码自己考到编译器中 登陆界面index.jsp <%@page contentType="text/html;charset=GBK"%> <html> <head> <title>用户登录</title> </head> <body> <div align="center"><!-- 登录表单 --> <h1><font color="#FF0000"><strong>登录</...

察雅县15334426060: 追加高分求JSP验证码实现代码(例子)
蓬养盐酸: 你先看下面的代码,不行我用QQ和你详说,363024687 把入下代码复制到code.jsp页面里,然后在另一个jsp页面里写&lt;img src="code.jsp"&gt;,这样这个&lt;img &gt;标签显示的将是验证码,代码如下: &lt;%@ page language="java" ...

察雅县15334426060: 用jsp实现一个简单的登录界面,主要是验证码 -
蓬养盐酸: <html><br><head><br><title>简单页面</title><br><script><br>function yzm(){<br>var Num=""; <br>for(var i=0;i<4;i++) <br>{ <br> Num+=Math.floor(Math.random()*10); <br>} <br>document.getElementById("yzphoto").value=Num;<br>document...

察雅县15334426060: jsp做验证码的生成 -
蓬养盐酸: 用Serverlet编写!以下是验证码的产生代码!你可以研究一下!public class ValidateCodeServlet extends HttpServlet { /** **/ private static final long serialVersionUID = 4008416931787800531L; /** * Constructor of the object. */ public ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网