jsp表单提交验证码功能实现

来源:互联网 发布:淘宝价格变动软件 编辑:程序博客网 时间:2024/05/18 02:23

注:文章部分功能摘抄自网络,如若转载请注明出处

引用js验证:

<script language="javascript" src="js/validate.js"></script>


validate.js

function changeCode()  {  var myimg = document.getElementById("rc"); now = new Date(); myimg.src="imgcode?code="+now.getTime();}  

jsp中调用:

<td>验证码:  <input type="text" name="certCode" style="width:50px"/><img src="imgcode"  alt="看不清楚?点击更换验证码"  id="rc"  onclick="this.src='imgcode?a='+Math.random()+100"/> <a href="javascript:changeCode()">看不清?单击换一张图片</a><font color="red">*</font> </td>

验证码处理servlet类:

package servlet;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class RandomCode */public class RandomCode extends HttpServlet {   private static final long serialVersionUID = 1L;     private static int WIDTH = 65;//设置图片的宽度     private static int HEIGHT = 22;//设置图片的高度     public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {    HttpSession session = request.getSession();    response.setContentType("image/jpeg");    ServletOutputStream sos = response.getOutputStream();      response.setHeader("Pragma", "No-cache");    response.setHeader("Cache-Control", "no-cache");    response.setDateHeader("Expires", 0);  //禁用IE缓存    BufferedImage image = new BufferedImage(WIDTH, HEIGHT,      BufferedImage.TYPE_INT_RGB);  //设置图像缓冲区并设置图像格式  Graphics g = image.getGraphics();      char[] rands = generateCheckCode();    drawBackground(g);    drawRands(g, rands);    g.dispose();      ByteArrayOutputStream bos = new ByteArrayOutputStream();    ImageIO.write(image, "JPEG", bos);    byte[] buf = bos.toByteArray();    response.setContentLength(buf.length);    sos.write(buf);    bos.close();    sos.close();    session.setAttribute("randomCode", new String(rands));   }     private void drawBackground(Graphics g) {    g.setColor(new Color(0xDCDCDC));    g.fillRect(0, 0, WIDTH, HEIGHT);    for (int i = 0; i < 120; i++) {     int x = (int) (Math.random() * WIDTH);     int y = (int) (Math.random() * HEIGHT);     int red = (int) (Math.random() * 255);     int green = (int) (Math.random() * 255);     int blue = (int) (Math.random() * 255);     g.setColor(new Color(red, green, blue));     g.drawOval(x, y, 1, 0);    }   }     private void drawRands(Graphics g, char[] rands) {    // g.setColor(Color.BLUE);    Random random = new Random();    int red = random.nextInt(110);    int green = random.nextInt(50);    int blue = random.nextInt(50);    g.setColor(new Color(red, green, blue));    g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18));    g.drawString("" + rands[0], 1, 17);    g.drawString("" + rands[1], 16, 15);    g.drawString("" + rands[2], 31, 18);    g.drawString("" + rands[3], 46, 16);   }     private char[] generateCheckCode() {    String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";    char[] rands = new char[4];    for (int i = 0; i < 4; i++) {     int rand = (int) (Math.random() * 36);     rands[i] = chars.charAt(rand);    }    return rands;   }     public void doPost(HttpServletRequest request, HttpServletResponse response)     throws ServletException, IOException {    this.doGet(request, response);   }  }  
web核心配置文件,web.xml

 <servlet>    <servlet-name>RandomCodeServlet</servlet-name>    <servlet-class>servlet.RandomCode</servlet-class>   </servlet>
 <servlet-mapping>    <servlet-name>RandomCodeServlet</servlet-name>    <url-pattern>/imgcode</url-pattern>   </servlet-mapping>  




0 0
原创粉丝点击