
<%@ page language="java" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
href="#" onclick="changeImg();">¿´²»Çå
servlet:ImageServlet.java
package com.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
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;
public class ImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int width=150;//ÑéÖ¤ÂëͼƬ¿í¶È
int height=60;//ÑéÖ¤ÂëͼƬ¸ß¶È
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
Graphics g=image.getGraphics();
Random random=new Random();//´´½¨Ò»¸öËæ»úÀà
g.setColor(getRandColor(200,250));//±³¾°ÑÕɫҪƫµ
g.fillRect(0, 0, width, height);//»±³¾°
g.setColor(getRandColor(0,255));//±ß¿òÑÕÉ«
g.drawRect(0, 0, width-1, height-1);//»±ß¿ò
g.setColor(getRandColor(160,200));// Ëæ»ú²úÉú5Ìõ¸ÉÈÅÏߣ¬Ê¹Í¼ÏóÖеÄÈÏÖ¤Âë²»Ò×±»ÆäËü³ÌÐò̽²âµ½
for(int i=0;i<8;i++){
int x=random.nextInt(width);
int y=random.nextInt(height);
int x1=random.nextInt(width);
int y1=random.nextInt(height);
g.drawLine(x, y, x1, y1);
}
g.setColor(getRandColor(160,200));// Ëæ»ú²úÉú100µã£¬Ê¹Í¼ÏóÖеÄÈÏÖ¤Âë²»Ò×±»ÆäËü³ÌÐò̽²âµ½
for(int i=0;i<100;i++){
int x=random.nextInt(width);
int y=random.nextInt(height);
g.drawLine(x, y, x, y);
}
Font font = new Font("Times New Roman", Font.ITALIC,38); // ´´½¨×ÖÌ壬×ÖÌåµÄ´óСӦ¸Ã¸ù¾ÝͼƬµÄ¸ß¶ÈÀ´¶¨¡£
g.setFont(font);//ÉèÖÃ×ÖÌå
int length = 6; // ÉèÖÃĬÈÏÉú³É4¸öÑéÖ¤Âë
String s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567"; // ÉèÖñ¸Ñ¡ÑéÖ¤Âë:°üÀ¨"a-z"ºÍÊý×Ö"0-9"
String sRand="";
// ÓÃËæ»ú²úÉúµÄÑÕÉ«½«ÑéÖ¤Âë»æÖÆµ½Í¼ÏñÖС£
// Éú³ÉËæ»úÑÕÉ«(ÒòΪÊÇ×öǰ¾°£¬ËùÒÔÆ«Éî)
//µ÷Óú¯Êý³öÀ´µÄÑÕÉ«Ïàͬ£¬¿ÉÄÜÊÇÒòΪÖÖ×ÓÌ«½Ó½ü£¬ËùÒÔÖ»ÄÜÖ±½ÓÉú³É
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
for(int i=0;i sRand+=ch; g.drawString(ch, 22*i+12, (random.nextInt(5)-2)*i+40); } //½«Éú³ÉµÄ×Ö·û´®´æ´¢ÔÚsessionÖÐ HttpSession session=request.getSession(); session.setAttribute("checkCode", sRand); g.dispose();//ͼÏñÉúЧ //½ûֹͼÏñ»º´æ response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); //´´½¨¶þ½øÖƵÄÊä³öÁ÷ ServletOutputStream sos=response.getOutputStream(); // ½«Í¼ÏñÊä³öµ½ServletÊä³öÁ÷ÖС£ ImageIO.write(image, "jpeg", sos); sos.flush(); sos.close(); } public Color getRandColor(int lower,int upper){ Random random = new Random(); if(upper>255) upper=255; if(upper<1) upper=1; if(lower<1) lower=1; if(lower>255) lower=255; int r=lower+random.nextInt(upper-lower); int g=lower+random.nextInt(upper-lower); int b=lower+random.nextInt(upper-lower); return new Color(r,g,b); } } resultServlet.java package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class resultServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); String validateC = (String)request.getSession().getAttribute( "checkCode"); String veryCode = request.getParameter("txtyzm"); PrintWriter out = response.getWriter(); if (veryCode == null || "".equals(veryCode)) { out.print(""); } else { if (validateC.equals(veryCode)) { out.print(""); } else { out.print(""); } } out.flush(); out.close(); } } web.xml: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
