这个例子分享了sp页面验证码的具体代码,供大家参考。具体内容如下
项目结构如下。在MyEclipse中创建了一个新的网络项目,名为servlet
1.src下的一个新servlet类
package com.servlet导入Java。啊。颜色;导入Java。啊。字体;导入Java。啊。图形2d;导入Java。啊。图像。bufferedimage导入Java。io。ioexception导入Java。io。版画作家;导入Java。乌提尔。随机的;导入javax。servlet。servletexception导入javax。servlet。servletoutputstream导入javax。servlet。http。HttpServlet导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse导入com。星期日图像。编解码器。JPEG。jpegcodec导入com。星期日图像。编解码器。JPEG。jpegimageencoder公共类标识符服务器扩展了httpersvlet { public static final char[]chars={ ' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' A ' };//自定义验证码池公共静态Random=new Random();//随机数公共静态字符串getRandomString(){//获取6位随机数,放在图片里StringBuffer缓冲区=new StringBuffer();for(int I=0;i6;I){ buffer。追加(字符[随机。nextint(字符。长度)];}返回缓冲区。ToString();}公共静态Color getRandomColor(){//获取随机的颜色返回新颜色(random.nextInt(255),random.nextInt(255),random。nextint(255));}公共静态Color getReverseColor(Color c){//返回某颜色的反色返回新的Color(255 - c.getRed()、255 - c.getGreen()、255-c . GetBlue());} /** *对象的构造函数*/public identity servlet(){ super();}/* * * servlet的销毁. br */public void destroy(){ super。销毁();//只需在日志中放入'销毁'字符串//将代码放在这里}/* * * servlet的doGet方法br * *当表单的标记值方法等于得到时,调用此方法* * @参数请求客户端向服务器发送的请求* @param响应服务器向客户端发送的响应* @如果出现错误,将引发ServletException * @如果出现错误,将引发IOException */public void DoGet(httpersvletrequest请求,HttpServletResponse响应)将引发ServletException,IOException { response。setcontenttype(' image/JPEG ');//设置输出类型string randomString=getRandomString();//随机字符串request.getSession(真)。setAttribute('randomString ',randomString);//放到会议里int width=100//图片宽度int height=30//图片高度color=getRandomColor();//随机颜色,用于背景色颜色反转=getReverseColor(颜色);//反色,用于前景色//创建一个彩色图片BufferedImage bi=新的BufferedImage(宽度、高度、BufferedImage .TYPE _ INT _ RGB);图形2d g=bi。create graphics();//绘图对象设置字体(新字体(字体。字体BOLD,16));//设置字体g.setColor(颜色);//设置颜色g.fillRect(0,0,宽度,高度);//绘制背景g.setColor(反向);g . drawing(randomString,18,20);//绘制随机字符for(int i=0,n=随机。nextint(100);在;i ){//画最多100个噪音点g.drawRect(random.nextInt(宽度),random.nextInt(高度),1,1);} ServletOutputStream out=响应。getoutputstream();//转成联合图像专家组格式JPEGImageEncoder编码器=jpegcodec。createjpegencoder(out);//编码器编码器。编码(bi);//对图片进行编码出去。flush();//输出到客户端}/* * * servlet的doPost方法br * *当表单的标记值方法等于邮政时,调用此方法* * @参数请求客户端向服务器发送的请求* @param响应服务器向客户端发送的响应* @出错时抛出ServletException * @出错时抛出IOException */public void doPost(httpersvletrequest请求,HttpServletResponse响应)抛出ServletException,IOException { doGet(请求,响应);}/* * * servlet的初始化br * * @出现错误时抛出ServletException */public void init()抛出ServletException { //将代码放在这里}}2、web.xml,会自动生成小型应用程序和小型应用程序映射的配置
?可扩展标记语言版本='1.0 '编码='UTF-8 '?web-app版本=' 3.0 ' xmlns=' http://Java。星期日com/XML/ns/javaee ' xmlns : xsi=' http://www .w3。org/2001/XMLSchema-实例' xsi :架构位置=' http://Java。星期日http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd'显示-名称/显示-名称servlet servlet-名称identity servlet/servlet-名称servlet-class com . servlet . identityservlet/servlet-class/servlet-servlet下新建一个html,展示验证码
!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' ' http://www .w3。org/TR/HTML 4/松散。DTD ' HTML hearteta http-equiv=' Content-Type ' Content=' text/HTML;charset=UTF-8 '标题在此插入标题/title脚本类型=' text/JavaScript '函数ReLoadimage(){ document。GetElementBYID(' BTN ').disabled=truedocument。getelementbyid(' identity ').src='servlet/IdentityServlet?ts='新日期()。getTime();}/script/headdymg src=' http 3360 servlet/IdentityServlet ' id=' identity ' on load=' BTN。' disabled=false'/输入类型=按钮值='换个图片onclick=' ReLoadimage()' id=' BTN '/body/html启动雄猫,输入网址:http://localhost :8080/servlet/identity。html,效果如下:
点击'换个图片,会生成新的验证码。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。