import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CheckCodeServlet 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 {
int width=80;
int height=30;
int space=width/16;
int wwidth=(width-space*5)/4;
BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics pen=image.getGraphics();
pen.setColor(Color.LIGHT_GRAY);
pen.fillRect(0, 0, width, height-space*2);
pen.setColor(getColor());
pen.drawOval(0, 0, 30, 30);
Random r=new Random();
for(int i=1;i<=5;i++){
pen.setColor(getColor());
pen.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
}
for(int i=1;i<=6;i++){
pen.setColor(getColor());
pen.fillOval(r.nextInt(width), r.nextInt(height), r.nextInt(10), r.nextInt(10));
}
String code="";
for(int i=1;i<=4;i++){
int m=r.nextInt(26)+97;
byte[]b={(byte)m};
String s=new String(b) ;
code+=s;
pen.setColor(getColor());
pen.setFont(new Font("黑体",Font.BOLD,height-space*2));
pen.drawString(s, space*i+wwidth*(i-1),height-2*space);
}
HttpSession session=request.getSession();
session.setAttribute("code", code);
ImageIO.write(image, "jpg", response.getOutputStream());
}
private Color getColor(){
Random r=new Random();
int red=r.nextInt(256);
int green=r.nextInt(256);
int blue=r.nextInt(256);
return new Color(red,green,blue);
}
}
web.xml 配置
<servlet>
<servlet-name>CheckCodeServlet</servlet-name>
<servlet-class>com.softeem.cc.servlet.CheckCodeServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.softeem.cc.servlet.LoginServlet</servlet-class>
</servlet>
jsp页面
<input type="text" name="code" style="width:80px"/>
<script type="text/javascript">
function changeCode(){
document.getElementById("codeImg").src="CheckCodeServlet?param="+Math.random();
}
</script>
<img id="codeImg"width="80" height="30" src="CheckCodeServlet" alt="看不起。点一下" οnclick="changeCode()">