![]() |
#2
lampeter1232009-12-26 08:58
网上找到的
显示验证码的html页面login.html代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>login.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <center> <form action="login" method="post"> 验证码:<input type="text" name="random"><img src="imgcode"> <br> <br> <input type="submit" value="提交"> </form> </center> </body> </html> 动态生成验证码的servlet类RandomCodeServlet.java代码如下: package iss import java.awt.Color import java.awt.Font import java.awt.Graphics2D import java.awt.image.BufferedImage 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 javax.servlet.http.HttpSession import javax.imageio.* public class RandomCodeServlet extends HttpServlet ...{ /** *//** * Constructor of the object. */ public RandomCodeServlet() ...{ super() } //验证码图片的宽度 private int width=60 //验证码图片的高度 private int height=20 protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,{ BufferedImage buffImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB) Graphics2D g=buffImg.createGraphics() //创建一个随机数生成器 Random random=new Random() g.setColor(Color.WHITE) g.fillRect(0, 0, width, height) //创建字体,字体的大小应该根据图片的高度来定 Font font=new Font("Times New Roman",Font.PLAIN,18) //设置字体 g.setFont(font) //画边框 g.setColor(Color.BLACK) g.drawRect(0, 0, width-1, height-1) //随机产生160条干扰线 g.setColor(Color.GRAY) for(int i=0i<160i++)...{ int x=random.nextInt(width) int y=random.nextInt(height) int x1=random.nextInt(12) int y1=random.nextInt(12) g.drawLine(x, y, x+x1, y+y1) } //randomCode用于保存随机产生的验证码 StringBuffer randomCode=new StringBuffer() int red=0,green=0,blue=0 //随机产生4位数字的验证码 for(int i=0i<4i++)...{ //得到随机产生的验证码数字 String strRand=String.valueOf(random.nextInt(10)) //产生随机的颜色分量来构造颜色值 red=random.nextInt(110) green=random.nextInt(50) blue=random.nextInt(50) //用随机产生的颜色将验证码绘制到图像中 g.setColor(new Color(red,green,blue)) g.drawString(strRand, 13*i+6, 16) randomCode.append(strRand) } //将四位数字的验证码保存到session中 HttpSession session=request.getSession() session.setAttribute("randomCode", randomCode.toString()) //禁止图像缓存 response.setHeader("Pragma", "no-cache") response.setHeader("Cache-Control", "no-cache") response.setDateHeader("Expires", 0) response.setContentType("image/jpeg") //将图像输出到servlet输出流中 ServletOutputStream sos=response.getOutputStream() ImageIO.write(buffImg, "jpeg", sos) sos.close() } } 判断验证码是否匹配的LoginServlet.java代码如下: package iss import import import javax.servlet.ServletException import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse import javax.servlet.http.HttpSession public class LoginServlet extends HttpServlet ...{ /** *//** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{ HttpSession session=request.getSession() String randomCode=(String)session.getAttribute("randomCode") if(null==randomCode)...{ response.sendRedirect("login.html") return } String reqRandom=request.getParameter("random") response.setCharacterEncoding("gbk") response.setContentType("text/htmlcharset=gb2312") PrintWriter out = response.getWriter() if(randomCode.equals(reqRandom))...{ out.println("验证码匹配!") }else...{ out.println("验证码不匹配!") } out.close() } } web.xml如下: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java. xmlns:xsi="http://www. xsi:schemaLocation="http://java. http://java. <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>RandomCodeServlet</servlet-name> <servlet-class>iss.RandomCodeServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>iss.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RandomCodeServlet</servlet-name> <url-pattern>/imgcode</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> </web-app> |
我用serlvet做了一个动态生成验证码的类,请问在jsp表单中怎么调用?