div id = "mydiv"><img src="/servlet/ShowValidateCodeImage" align="bottom"/></div>
<a href="javascript:onChange('/servlet/ShowValidateCodeImage')">换一张</a>
function onChange(url)
{
var randomnumber = Math.random();
document.getElementById("mydiv").innerHTML = "<img src='"+url+"?"+randomnumber+"'/>";
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hintsoft.xunshan.util.ValidateImageCode;
public class ShowValidateCodeImage extends HttpServlet { private static final long serialVersionUID = 3848852076870701085L;
public ShowValidateCodeImage() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
ValidateImageCode.showImage(response,ValidateImageCode.createImage(request,"validateCode"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}
}
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import java.util.Random;
import java.awt.Font;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
public class ValidateImageCode {
public static BufferedImage createImage(ServletRequest request,String imageName){
HttpServletRequest servletRequest=(HttpServletRequest)request;
Random random=new Random();
String valiCode="";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
valiCode+=rand;
}
if(servletRequest.getSession()==null)
servletRequest.getSession().setAttribute("valiCode",valiCode);
else
servletRequest.getSession(false).setAttribute("valiCode",valiCode);
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));
g.setColor(Color.black);
g.drawString(valiCode.substring(0,1), 8, 17);
g.drawString(valiCode.substring(1,2), 20, 15);
g.drawString(valiCode.substring(2,3), 35, 18);
g.drawString(valiCode.substring(3,4), 45, 15);
g.dispose();
servletRequest.getSession(false).setAttribute(imageName,image);
return image;
}
public static boolean showImage(HttpServletResponse response,BufferedImage image){
boolean ifSuccess=true;
try{
ServletOutputStream outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
outStream.close();
}catch(Exception e){
ifSuccess=false;
}
return ifSuccess;
}
}