//生成验证码
package djr.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class IdentityServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public static final char[] CHARS={'2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q', 'R','S','T','U','V','W','X','Y','Z'}; public static Random random=new Random(); public static String getRandomString(){ StringBuffer buffer=new StringBuffer(); for(int i=0;i<6;i++){ buffer.append(CHARS[random.nextInt(CHARS.length)]); } return buffer.toString(); } public static Color getRandomColor(){ return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)); } //返回某一颜色的反色 public static Color getReverseColor(Color c){ return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue()); } public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ doPost(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); String randomString=getRandomString(); int width=100; int height=30; Color color=getRandomColor(); Color reverse=getReverseColor(color); BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); Graphics2D g=bi.createGraphics(); g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16)); g.setColor(color); g.fillRect(0, 0, width, height); g.setColor(reverse); g.drawString(randomString, 18, 20); for(int i=0,n=random.nextInt(100);i
//一个HTML文件测试 <%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ include file="taglibs.inc.jsp" %>
//主要是通过Session完成验证 System.out.println("后台验证验证码结果:"+(String)request.getSession(true).getAttribute("randomString")); if(IdentityServlet.getRandomString()!=(String)request.getSession(true).getAttribute("randomString")){ url="index.jsp"; } else{ // 登录邮件系统 UserDTO userDTO = new UserDTO(); userDTO.setUserid(request.getParameter("txtUserID")); userDTO.setPassword(request.getParameter("pwdUserPWD")); Connection conn = DbFactory.getConnection(); UserDAO userDAO = new UserDAO(); if (userDAO.findUser(userDTO, conn)) { request.getSession().setAttribute("userinfo", userDTO); MailManager mailMgr = new MailManager(); mailMgr.setUser(userDTO.getUserid()); mailMgr.setPassword(userDTO.getPassword()); if (mailMgr.receiveMail()) { EmailDTO emailDTO = new EmailDTO(); emailDTO.setUserID(userDTO.getUserid()); List
希望看懂原理,代码不能直接Copy,我的是整个项目下的东西哦!红色标注的是关键!!!!
最新评论