JSP页面的验证码生成及调用方法介绍
发布时间:2023-05-09 13:38:56 所属栏目:教程 来源:
导读:首先是要生成验证码:
package xx.xx
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;
public class imageensure ...{
package xx.xx
import java.io.*;
import java.util.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;
public class imageensure ...{
首先是要生成验证码: package xx.xx import java.io.*; import java.util.*; import javax.imageio.*; import java.awt.*; import java.awt.image.*; public class imageensure ...{ public imageensure() ...{ } private char maptable[] = ...{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; public string getensure(int width, int height, outputstream os) ...{ if (width <= 0) width = 60; if (height <= 0) height = 20; bufferedimage image = new bufferedimage(width, height, bufferedimage.type_int_rgb); // 获取图形上下文 graphics g = image.getgraphics(); // 设定背景色 g.setcolor(new color(0xdccccc)); 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 < 4; ++i) ...{ strensure += maptable[(int) (maptable.length * math.random())]; } // 将认证码显示到图象中 g.setcolor(color.red); g.setfont(new font("atlantic inline", font.plain, 14)); //画的具体坐标 string str = strensure.substring(0, 1); g.drawstring(str, 8, 14); 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, 45, 15); // 释放图形上下文 g.dispose(); try ...{ // 输出图象到页面 imageio.write(image, "jpeg", os); } catch (ioexception e) ...{ return ""; } return strensure; } } 然后是调用,可以在页面调用,也可以在servlet中调用,我推荐是单独的一个servlet调用,在页面调用可能会出现异常,但是不影响使用。在servlet中写上如下的代码: ||| //禁用缓存,每次访问此页面,都重新生成 response.setheader("pragma","no-cache"); response.setheader("cache-control","no-cache"); response.setdateheader("expires", 0); //生成验证码的实例对象 imageensure ie = new imageensure(); //调用里面的方法,返回的是生成的验证码中的字符串 string str = ie.getensure(0,0,response.getoutputstream()); //获得session,并把字符串保存在session中,为后面的对比做基础 httpsession session = request.getsession(); session.setattribute("strensure", str); 然后把servlet内嵌到具体的网页中,具体嵌入就是用dreamweaver在需要插入验证码的地方插入图像,地址就指向此servlet即可。 输入验证码并提交后,在新的页面中可以按如下方法判断: <body> <% //session的默认存在时间为20分钟,如果20分钟不输入验证码,session将会消失,因此要做下判断 if(session.getattribute("strensure")==null) ...{ %> <jsp:forward page="imageerr.jsp"/> <% }else...{ //获取在session中保存的生成验证码的数字 string ensure = (string)session.getattribute("strensure"); //获取在页面的表单中输入的验证码 string code = request.getparameter("txtimage"); //判断输入的验证码,跟保存的生成的验证码是否一样 if(ensure.equals(code) && code != null) ...{ %> <jsp:forward page="searchword?method=add"/> <% }else...{ %> <jsp:forward page="imageerr.jsp"/> <% } } %> </body> (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐