验证码技术的实现按如下步骤:
1、设计一个验证码生成类RandomImageGenerator.java
1、设计一个验证码生成类RandomImageGenerator.java
import java.awt.*;
如何提高电脑网速 import java.awt.image.*;
import java.io.*;快乐暑假手抄报内容文字
import javax.imageio.ImageIO;
public class RandomImageGenerator {
final static int LENGTH=4;
static Color colors[]={d,Color.black,Color.blue,Color.an};
public static String random() {//创建一个4位的验证码字符串
String str="1234567890ABCDEFGHIJKLMNOPORSTUVWXYZabcefghijklmnopqrstuvwxyz",rand="";
java.util.Random random=new java.util.Random();
for(int i=0;i<LENGTH;i++) {
int Int(str.length());
如何提高电脑网速 import java.awt.image.*;
import java.io.*;快乐暑假手抄报内容文字
import javax.imageio.ImageIO;
public class RandomImageGenerator {
final static int LENGTH=4;
static Color colors[]={d,Color.black,Color.blue,Color.an};
public static String random() {//创建一个4位的验证码字符串
String str="1234567890ABCDEFGHIJKLMNOPORSTUVWXYZabcefghijklmnopqrstuvwxyz",rand="";
java.util.Random random=new java.util.Random();
for(int i=0;i<LENGTH;i++) {
int Int(str.length());
rand+=str.substring(index,index+1);
}
return rand;
}
public static void render(String num,OutputStream out) throws IOException {//创建一幅含有验证码的干扰图象,送输出流
if (num.length()!=LENGTH)
throw new IllegalArgumentException("验证码长度不足");
int height=30;
int width=(height-10)*LENGTH;
BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics();
关于庐山的诗句 java.util.Random random=new java.util.Random();
g.setColor(Color.white);
}
return rand;
}
public static void render(String num,OutputStream out) throws IOException {//创建一幅含有验证码的干扰图象,送输出流
if (num.length()!=LENGTH)
throw new IllegalArgumentException("验证码长度不足");
int height=30;
int width=(height-10)*LENGTH;
BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics();
关于庐山的诗句 java.util.Random random=new java.util.Random();
g.setColor(Color.white);
g.fillRect(0,0,width,height);
Font mFont=new Font("宋体",Font.BOLD+Font.ITALIC,height-5);
g.setFont(mFont);
FontMetrics FontMetrics();
//画干扰点
for(int i=0;i<200;i++) {
int Int(width);
int Int(height);
Color color1=new Int(255),Int(255),Int(255));
g.setColor(color1);
g.drawOval(x,y,0,0);
}
//画干扰线
for(int i=0;i<5;i++) {
Font mFont=new Font("宋体",Font.BOLD+Font.ITALIC,height-5);
g.setFont(mFont);
FontMetrics FontMetrics();
//画干扰点
for(int i=0;i<200;i++) {
int Int(width);
int Int(height);
Color color1=new Int(255),Int(255),Int(255));
g.setColor(color1);
g.drawOval(x,y,0,0);
}
//画干扰线
for(int i=0;i<5;i++) {
int x=0;
int Int(height);
int x1=width;
int Int(height);
Color color1=new Int(255),Int(255),Int(255));
g.setColor(color1);
g.drawLine(x,y,x1,y1);
}
//显示验证码字符
char str[]=CharArray();
for(int i=0,x=0,y=0;i<str.length;i++) {
Descent();
if (i%2==0){
y-=10;
int Int(height);
int x1=width;
int Int(height);
Color color1=new Int(255),Int(255),Int(255));
g.setColor(color1);
g.drawLine(x,y,x1,y1);
}
//显示验证码字符
char str[]=CharArray();
for(int i=0,x=0,y=0;i<str.length;i++) {
Descent();
if (i%2==0){
y-=10;
}
g.setColor(Int(colors.length)]);
g.drawChars(str,i,1,x,y);
x+=fm.charWidth(str[i])+5;
}
g.dispose();
ImageIO.write(bi,"jpg",out);
}
}
2.使用Servlet程序来实现验证码
在页面中使用这个Servlet程序,显示验证码图案。
g.setColor(Int(colors.length)]);
g.drawChars(str,i,1,x,y);
x+=fm.charWidth(str[i])+5;
}
g.dispose();
ImageIO.write(bi,"jpg",out);
}
}
2.使用Servlet程序来实现验证码
在页面中使用这个Servlet程序,显示验证码图案。
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.http.*;
import java.io.*;
public class RandomImageServlet extends HttpServlet {
public final static String RANDOM_LOGIN_KEY="RANDOM_LOGIN_KEY";
public void init() throws ServletException {
System.setProperty("java.awt.headless","true");//设置一个系统属性
}
public String getRandomLoginKey(HttpServletRequest request){
return (Session().getAttribute(RANDOM_LOGIN_KEY荥阳旅游景点大全);
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
HttpSession Session();
if (session!=null){
String randomString=RandomImageGenerator.random();//得到一个6位的验证码字符串
明晓溪经典语录 session.setAttribute(RANDOM_LOGIN_KEY , randomString);//验证码保存到se
public final static String RANDOM_LOGIN_KEY="RANDOM_LOGIN_KEY";
public void init() throws ServletException {
System.setProperty("java.awt.headless","true");//设置一个系统属性
}
public String getRandomLoginKey(HttpServletRequest request){
return (Session().getAttribute(RANDOM_LOGIN_KEY荥阳旅游景点大全);
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
HttpSession Session();
if (session!=null){
String randomString=RandomImageGenerator.random();//得到一个6位的验证码字符串
明晓溪经典语录 session.setAttribute(RANDOM_LOGIN_KEY , randomString);//验证码保存到se
ssion中
response.setContentType("image/jpeg");//设置响应类型为jpeg类型
response.setHeader("Pragma","No-cache");//设置响应不采用缓冲
response.setHeader("Cache-Control","no-cache");//设置响应不采用缓冲
受孕生男孩的三个最佳时间点 response.setDateHeader("Expires", 0);//设置响应不采用缓冲
der(OutputStream());
}
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doGet(request,response);
}
}
在l中配置这个Servlet程序:
response.setContentType("image/jpeg");//设置响应类型为jpeg类型
response.setHeader("Pragma","No-cache");//设置响应不采用缓冲
response.setHeader("Cache-Control","no-cache");//设置响应不采用缓冲
受孕生男孩的三个最佳时间点 response.setDateHeader("Expires", 0);//设置响应不采用缓冲
der(OutputStream());
}
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doGet(request,response);
}
}
在l中配置这个Servlet程序:
<servlet>
<servlet-name>image</servlet-name>
<servlet-class>ch17.RandomImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>image</servlet-name>
<url-pattern>/verifyCode.jsp</url-pattern>
</servlet-mapping>
3.JSP页面实现testRandom.jsp
<script type="text/javascript" language="javascript">
function Check() {
if (document.register.random.value==""){
window.alert("请填写验证码!");
ister.random.focus();
<servlet-name>image</servlet-name>
<servlet-class>ch17.RandomImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>image</servlet-name>
<url-pattern>/verifyCode.jsp</url-pattern>
</servlet-mapping>
3.JSP页面实现testRandom.jsp
<script type="text/javascript" language="javascript">
function Check() {
if (document.register.random.value==""){
window.alert("请填写验证码!");
ister.random.focus();
return false;
}
document.register.submit();
}
function reloadImage(url){
document.register.img1.src = url;
}
</script>
<form name="register" method="post" action="">
<table cellpadding="0" cellspacing="0">
<tr>
<td><div align="right" class="style2"><strong>验证码</strong></div></td>
<td><div align="center"><input name="random" type="text" id="random"></div></td>
<td><img name="img1" src="./verifycode.jsp" width="100" height="20" border="1"
}
document.register.submit();
}
function reloadImage(url){
document.register.img1.src = url;
}
</script>
<form name="register" method="post" action="">
<table cellpadding="0" cellspacing="0">
<tr>
<td><div align="right" class="style2"><strong>验证码</strong></div></td>
<td><div align="center"><input name="random" type="text" id="random"></div></td>
<td><img name="img1" src="./verifycode.jsp" width="100" height="20" border="1"
align="absmiddle">
<a href="JavaScript:reloadImage('./verifyCode.jsp');"><font size="2">看不清楚,换一张</font></a></td>
</tr>
<tr><td></td><td></td><td>
<input type="button" name="Submit" value="登录" onclick="Check()">
<td></tr>
</table>
</form>
在Eclipse按上述步骤完成后,点击“运行”,界面上验证码图标总是显示不出来,出现一把叉,究竟是什么原因,在网上查了很久,大多数都说是要下载类似flash插件,或者是Cookie禁用等方法,我按网上的方法改来改去,最后都是不行,最后我把l里的配置一个一个重新加进去,发现,竟然是在l里面配置了过滤器导致的。把这个过滤器的配置去掉,嘿嘿,竟然可以正常显示验证码图标了,问题得以解决,花了好长好长时间啊。
<a href="JavaScript:reloadImage('./verifyCode.jsp');"><font size="2">看不清楚,换一张</font></a></td>
</tr>
<tr><td></td><td></td><td>
<input type="button" name="Submit" value="登录" onclick="Check()">
<td></tr>
</table>
</form>
在Eclipse按上述步骤完成后,点击“运行”,界面上验证码图标总是显示不出来,出现一把叉,究竟是什么原因,在网上查了很久,大多数都说是要下载类似flash插件,或者是Cookie禁用等方法,我按网上的方法改来改去,最后都是不行,最后我把l里的配置一个一个重新加进去,发现,竟然是在l里面配置了过滤器导致的。把这个过滤器的配置去掉,嘿嘿,竟然可以正常显示验证码图标了,问题得以解决,花了好长好长时间啊。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论