windywindy 发表于 2013-1-15 02:42:12

验证码(二)

image.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%><%@page import="java.io.OutputStream"%><%!Color getRandColor(int fc, int bc) {Random random = new Random();if (fc > 255)fc = 255;if (bc > 255)bc = 255;int r = fc + random.nextInt(bc - fc);int g = fc + random.nextInt(bc - fc);int b = fc + random.nextInt(bc - fc);return new Color(r, g, b);}%><%try {response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);int width = 60, height = 20;BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);OutputStream os = response.getOutputStream();Graphics g = image.getGraphics();Random random = new Random();g.setColor(getRandColor(200, 250));g.fillRect(0, 0, width, height);g.setFont(new Font("Times New Roman", Font.PLAIN, 18));g.setColor(getRandColor(160, 200));for (int i = 0; i < 155; i++) {int x = random.nextInt(width);int y = random.nextInt(height);int xl = random.nextInt(12);int yl = random.nextInt(12);g.drawLine(x, y, x + xl, y + yl);}String sRand = "";for (int i = 0; i < 4; i++) {String rand = String.valueOf(random.nextInt(10));sRand += rand;g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));g.drawString(rand, 13 * i + 6, 16);}session.setAttribute("rand", sRand);// 验证码 加入Sessiong.dispose();ImageIO.write(image, "JPEG", os);os.flush();os.close();os = null;//response.flushBuffer();out.clear();out = pageContext.pushBody();} catch (IllegalStateException e) {System.out.println(e.getMessage());e.printStackTrace();}%>

login.jsp
<td class="LoginLabel">验证码:<td><h:inputText id="vcode" styleClass="inputValidate"tabindex="3" required="true" size="8" style="ime-mode:disabled" requiredMessage="*" validatorMessage="验证码不能为空"></h:inputText><h:graphicImage id="rand" url="image.jsp" alt="验证码"styleClass="validateImg" /></td><td><span style="color: #ffffff; font-size: 12px;          cursor: pointer;">看不清楚,<br />更换一张!</span></td>
页: [1]
查看完整版本: 验证码(二)