Servlet編程-驗證碼樣本,servlet驗證碼樣本

來源:互聯網
上載者:User

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 {
......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.