JSP验证码
1、login.jsp登陆界面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Login Page</title> <script language="javascript"> function loadImage() { document.getElementById("randImage").src="image.jsp?"+Math.random(); } </script> </head> <body> <form action="validate.jsp" method="post"> <table cellspacing="1" cellpadding="3" border="0"> <tr> <td colspan="2">Please enter your verification code</td> </tr> <tr> <td><input type="text" name="vcode"/></td> <td><img src="image.jsp" id="randImage"/></td> </tr> <tr> <td colspan="2"><a href="javascript:loadImage()">Change an image</a></td> </tr> <tr> <td colspan="2"><input type="submit" value="Submit"/></td> </tr> </table> </form> </body> </html>
2、image.jsp生成验证码图片的jsp文件
<%@ page language="java"%> <%@ page import="java.awt.*,java.awt.image.*,java.util.*" %> <%@ page import="java.io.OutputStream,javax.imageio.*"%> <%! Color getRandColor(int fc,int bc){ if(fc>255){ fc=255; } if(bc>255){ bc=255; } Random random=new Random(); 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); } %> <% //本地无缓存,每次自动刷新 response.addHeader("pragma", "No-cashe"); response.addHeader("cashe-control","no-cashe"); response.setDateHeader("expires",0); int width=60,height=20; BufferedImage bimg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics g=bimg.getGraphics(); g.setColor(getRandColor(200,250)); g.fillRect(0, 0, width, height); g.setColor(getRandColor(160,200)); Random rand=new Random(); for(int i=0;i<200;i++){ int x=rand.nextInt(width); int y=rand.nextInt(height); int w=rand.nextInt(12); int h=rand.nextInt(12); g.drawLine(x, y, x+w, y+h); } String srand=""; g.setFont(new Font("Times New Roman",Font.PLAIN,18)); for(int i=0;i<4;i++){ String num=String.valueOf(rand.nextInt(10)); srand+=num; g.setColor(new Color(20+rand.nextInt(110),20+rand.nextInt(110),20+rand.nextInt(110))); g.drawString(num, 13*i+6, 16); } session.setAttribute("srand", srand); OutputStream os=response.getOutputStream(); ImageIO.write(bimg, "jpeg", os); os.flush(); os.close(); os=null; g.dispose(); //这两句非常重要,如果没有会报错 out.clear(); out=pageContext.popBody(); %>
3、validate.jsp对验证码进行验证
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Validate Page</title> </head> <body> <% String str=(String)session.getAttribute("srand"); String incode=request.getParameter("vcode"); if(str.equals(incode)){ out.println("<font size=\"+3\" color=\"#000\">The verification is right!</font><br/>"); out.println("<font size=\"+4\" color=\"#FF0000\">Welcone to the page!</font><br/><hr/>"); }else{ out.println("<font size=\"+4\" color=\"#FF0000\">" +"Sorry the verification code is not right</font></br><hr>"); } out.println("<br/><a href=\"login.jsp\">Back to the login page</a>"); %> </body> </html>
4、结果
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。