Servlet編程-驗證碼樣本,servlet驗證碼樣本
Servlet編程基本思想我上一篇文章已經說過,這裡就不多說了,給大家分享一個用Servlet實現驗證碼驗證的樣本。
首先我們需要一個Servlet類:ImageServlet.java來產生驗證碼並將驗證碼存放到Session中
接下來,我們需要配置web.xml檔案添加Servlet
好,現在我們寫一個登入頁面,就可以實現驗證碼的顯示了login.jsp
最後,我們只需要驗證Session中的驗證碼和使用者提交的驗證碼是否一致,再建一個login_check.jsp來驗證驗證碼。
現在,一個完整的Servlet驗證碼驗證功能就實現了,不妨動手測試一下。
總結:我們首先需要在伺服器端通過ImageSreevlet產生驗證碼圖片並把驗證碼存放到session中,其次要在web.xml中增加Servlet配置,然後我們在用戶端通過<img>標籤就可以引用該驗證碼圖片,最後我們在另一個頁面實現把使用者輸入的驗證碼與session中的驗證碼相比較就可以了。代碼中有不懂了敬請各位朋友與本人交流討論。
編寫一個Servlet驗證碼
你好,代碼如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import javax.imageio.*;
/**
* @author yeeku.H.lee kongyeeku@163.com
* @version 1.0
* <br>Copyright (C), 2005-2008, yeeku.H.Lee
* <br>This program is protected by copyright laws.
* <br>Program Name:
* <br>Date:
*/
public class AuthImg extends HttpServlet
{
private Font mFont = new Font("Arial Black", Font.PLAIN, 16);
public void init() throws ServletException
{
super.init();
}
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);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
int width=100, height=18;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random random = ......餘下全文>>
對於Servlet產生驗證碼的問題
這是我做的一個,你參考一下,可以正常啟動並執行:
package com;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.Random;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
public class ImageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-control","no-cache");
response.setDateHeader("Expires",0);
OutputStream out=response.getOutputStream();
int width=80,height=20;
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g=image.getGraphics();
Random random=new Random();
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman",Font.ITALIC,18));
String sRand="";
for(int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand, 20*i+6, 16);
}
request.getSession().setAttribute("valCode", sRand);
g.dispose();
ImageIO.write(image,"JPEG",out);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
......餘下全文>>