servlet验证码的实现

servlet文件:

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import sun.awt.image.codec.JPEGParam; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import java.io.*; import java.awt.*; import java.awt.image.BufferedImage; import java.util.*; /** * Servlet implementation class ValidateCode */ public class ValidateCode extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ValidateCode() { super(); // TODO Auto-generated constructor stub } public void validateCode(ServletOutputStream out) { String[] str=new String[4]; Random random=new Random(); for(int i=0;i<4;i++) { int temp=random.nextInt(10); str[i]=String.valueOf(temp); } //根据得到的随机数,绘制验证码图片 int width=80; int height=20; BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics2D g=image.createGraphics(); g.clearRect(0,0,width,height); g.setColor(Color.RED); g.setFont(new Font("serial",Font.BOLD,20)); for(int i=0;i<4;i++) { g.drawString(str[i],20*i,20); } g.dispose(); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); JPEGParam param=(JPEGParam) encoder.getDefaultJPEGEncodeParam(image); param.setQuality(1.0f,false); encoder.setJPEGEncodeParam(param); try { encoder.encode(image); } catch (ImageFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("image/jpeg"); validateCode(response.getOutputStream()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request,response); } }

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>StrutsTest</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>ValidateCode</servlet-name> <servlet-class>servlet.ValidateCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>ValidateCode</servlet-name> <url-pattern>/ValidateCode</url-pattern> </servlet-mapping> </web-app>

jsp:

<%out.println("<img src="/" mce_src="/""/StrutsTest/ValidateCode/"/>"); %>

你可能感兴趣的:(image,String,servlet,Random,import,Constructor)