求JSP编写验证码微信小程序编写代码的代码注释

jsp servlet实现验证码功能_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
jsp servlet实现验证码功能
&&在网上看了下jsp servlet实现验证码功能,大多不能用,或者功能不全。今天整理的,绝对可用!注释详细!
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢2010年5月 Java大版内专家分月排行榜第一2010年2月 Java大版内专家分月排行榜第一2010年1月 Java大版内专家分月排行榜第一2010年1月 Oracle大版内专家分月排行榜第一2009年12月 Java大版内专家分月排行榜第一2009年12月 Oracle大版内专家分月排行榜第一
2010年2月 Oracle大版内专家分月排行榜第三
2010年5月 Java大版内专家分月排行榜第一2010年2月 Java大版内专家分月排行榜第一2010年1月 Java大版内专家分月排行榜第一2010年1月 Oracle大版内专家分月排行榜第一2009年12月 Java大版内专家分月排行榜第一2009年12月 Oracle大版内专家分月排行榜第一
2010年2月 Oracle大版内专家分月排行榜第三
2010年2月 Java大版内专家分月排行榜第二
2011年7月 Java大版内专家分月排行榜第三2010年1月 Java大版内专家分月排行榜第三2009年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。5866人阅读
jsp验证码代码:JSP汉字验证码的实现代码&.*/"%&  &%!//createbysmallnest//email://website://生成随机颜色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.//在图片背景上增加噪点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+=//设置字体的颜色g.setColor(getRandColor(random,10,150));//设置字体g.setFont(newFont(fontTypes[random.nextInt(fontTypesLength)],Font.BOLD,18+random.nextInt(6)));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
很多新手对图片验证码不是很了解,今天我们就来看看一个实例吧,首先,先写一个动态图片生成的Servlet类,如下:
package org.
import java.awt.Cimport java.awt.Fimport java.awt.Gimport java.awt.image.BufferedIimport java.io.ByteArrayOutputSimport java.io.IOEimport java.util.R
import javax.imageio.ImageIO;import javax.servlet.ServletEimport javax.servlet.ServletOutputSimport javax.servlet.http.HttpSimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpS
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 = /"ABCDEFGHIJKLMNOPQRSTUVWXYZ/";char[] rands = new char[4];for (int i = 0; i & 4; i++) {int rand = (int) (Math.random() * 36);rands[i] = chars.charAt(rand);}}
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验证码生成,显示,验证和刷新:
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 =}
前两个有时间参考
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
证实好用的:只一个单纯的jsp 页面直接粘过去即可。
&%@ page&&& &&&&&&&& import = "java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %&&&& &%@ page import = "java.io.OutputStream" %&&&& &%@ page 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 );&&& &&&&&&&&&&&&&&&& int width = 60 , height = 20 ;&&& &&&&&&&&&&&&&&& BufferedImage image = new BufferedImage(width, height,&&& &&&&&&&&&&&&&&& BufferedImage.TYPE_INT_RGB);&&& &&&&&&&&&&&&&&& OutputStream os = response.getOutputStream();&&& &&&&&&&&&&&&&&& 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(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 sRand = "" ;&&& &&&&&&&&&&&&&&&& for ( int i = 0 ; i & 4 ; i++) {&&& &&&&&&&&&&&&&&&&&&&&&&& String rand = String.valueOf(random.nextInt( 10 ));&&& &&&&&&&&&&&&&&&&&&&&&&& sRand +=&&& &&&&&&&&&&&&&&&&&&&&&&& g.setColor( new Color( 20 + random.nextInt( 110 ), 20 + random&&& &&&&&&&&&&&&&&&&&&&&&&& .nextInt( 110 ), 20 + random.nextInt( 110 )));&&& &&&&&&&&&&&&&&&&&&&&&&& g.drawString(rand, 13 * i + 6 , 16 );&&& &&&&&&&&&&&&&&& }&&& &&&&&&&&&&&&&&& session.setAttribute( "rand" , sRand);&&& &&&&&&&&&&&&&&& g.dispose();&&& && &&&&&&&&&&&&&&& ImageIO.write(image, "JPEG" , os);&&& &&&&&&&&&&&&&&& os.flush();&&& &&&&&&&&&&&&&&& os.close();&&& &&&&&&&&&&&&&&& os =&&& &&&&&&&&&&&&&&& response.flushBuffer();&&& &&&&&&&&&&&&&&& out.clear();&&& &&&&&&&&&&&&&&& out = pageContext.pushBody();&&& &&&&&&& } catch (IllegalStateException e) {&&& &&&&&&&&&&&&&&& System.out.println(e.getMessage());&&& &&&&&&&&&&&&&&& e.printStackTrace();&&& &&&&&&& }&&& %&&&&
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
关键字: jsp
在网上找了哈相关的代码 其大多都没有注释 为了方便学习特意整理了一分带注释的验证码的代码 &&& 生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变) 产生验证码图片的文件-----image.jsp &%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %& &%! 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); &&&&&&& } %& &% //设置页面不缓存 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); // 在内存中创建图象 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); } // 取随机产生的认证码(4位数字) String sRand=""; for (int i=0;i&4;i++){ &&& String rand=String.valueOf(random.nextInt(10)); &&& sRand+= &&& // 将认证码显示到图象中 &&& g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 &&& g.drawString(rand,13*i+6,16); } // 将认证码存入SESSION session.setAttribute("rand",sRand); // 图象生效 g.dispose(); // 输出图象到页面 ImageIO.write(image, "JPEG", response.getOutputStream()); %& ---------------使用验证码图片的文件---------a.jsp------------------------------------ &%@ page contentType="text/charset=gb2312" %& &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"& &html& &head& &title&认证码输入页面&/title& &meta http-equiv="Content-Type" content="text/ charset=gb2312"& &META HTTP-EQUIV="Pragma" CONTENT="no-cache"& &META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"& &META HTTP-EQUIV="Expires" CONTENT="0"& &/head& &body& &form method=post action="check.jsp"& &table& &tr& &td align=left&系统产生的认证码:&/td& &td&&img border=0 src="image.jsp"&&/td& &/tr& &tr& &td align=left&输入上面的认证码:&/td& &td&&input type=text name=rand maxlength=4 value=""&&/td& &/tr& &tr& &td colspan=2 align=center&&input type=submit value="提交检测"&&/td& &/tr& &/form& &/body& &/html& -----------------验证的页面---------- 验证根据需要 直接判断request中的验证码和session中的是否一致就可以了
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:955645次
积分:11473
积分:11473
排名:第1346名
原创:224篇
转载:395篇
评论:148条
(1)(2)(1)(3)(2)(1)(25)(40)(222)(112)(122)(28)(17)(6)(2)(35)jsp做验证码的生成_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
jsp做验证码的生成
&&jsp做验证码的生成
你可能喜欢}

我要回帖

更多关于 程序代码编写规范 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信