zoukankan      html  css  js  c++  java
  • Form表单实现验证码功能

    JSP处理页面:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"
        import="java.awt.*,java.util.*,javax.imageio.*,java.awt.image.*"
    %>
    
    <%
       response.setHeader("Cache-Control", "no-cache");
       //在内存中创建图像,设置图像的宽和高
       int width=60,height=20;
       //实例化java.awt.image.BufferedImage,作用是访问图像数据缓冲区
       BufferedImage image= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);   //第三个参数:使用的颜色模式为RGB模式
       //获得画笔
       Graphics g= image.getGraphics();
       //设置背景颜色 RGB
       g.setColor(new Color(200,200,200));
       g.fillRect(0, 0, width, height);
       //取随机产生的验证码(4位数字)
       Random rnd= new Random();
       int randNum=rnd.nextInt(8999)+1000;  //返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
       String ranStr=String.valueOf(randNum);
       //将验证码存到session中
       session.setAttribute("randomString", ranStr);
       //将验证码显示到图像中
       g.setColor(Color.red);
       g.setFont(new Font("",Font.PLAIN,20));  //名称   样式    磅值大小
       g.drawString(ranStr, 10, 17);
       //随机产生100个干扰点,使图像中的验证码不易被其他程序检测到
       for(int i=0;i<100;i++){
           int x=rnd.nextInt(width);
           int y=rnd.nextInt(height);
           g.drawOval(x, y, 1, 1);
       }
       //输出图像到页面
       ImageIO.write(image, "JPEG", response.getOutputStream());
       out.clear();
       out=pageContext.pushBody();
    %>

    JSP表单页面:

    <form action="form" method="post">
       用户名:<input type="text" name="username">   <br>
       密码:<input type="password" name="password"> <br>
          <input type="text" name="code" size="20">  <img name="img" src="yanzhengma.jsp" id="img" onclick="yanzheng()">
          <a href="javascript:vord(0)" onclick="yanzheng()">看不清</a><br>
          <input type="submit" value="提交">
    </form>
    <script type="text/javascript">
           function yanzheng(){ 
               img.src=img.src+'?'+Math.random();
           }</script>

    Servlet处理页面:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setCharacterEncoding("utf-8");
            String yanzheng=request.getParameter("code");
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            if(request.getSession(false).getAttribute("numberStr")!=null)
            {
                String numberStr=(String)request.getSession(false).getAttribute("numberStr");
                if(yanzheng.equals(numberStr))
                {
                    if(username.equals("admin")&&password.equals("1234"))
                    {
                        response.getWriter().println("恭喜登录成功");
                    }else
                    {
                        response.getWriter().println("账号或者密码错误登录失败");
                    }
                }else
                {
                    response.getWriter().println("验证码错误");
                }
            }
        }
  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    读“我们应当怎样做需求分析”有感
    开发体会
    第二阶段个人总结10
    第二阶段个人总结09
    第二阶段个人总结08
    个人进度(13)
    个人进度(12)
    个人进度(11)
  • 原文地址:https://www.cnblogs.com/darren0415/p/6025226.html
Copyright © 2011-2022 走看看