zoukankan      html  css  js  c++  java
  • 系统登录界面的验证码

    一、java后台生成随机验证码

    package com.code; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; 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;
    @SuppressWarnings("serial") public class Check extends HttpServlet {
    public String suijima(){   char [] str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();   Random rd=new Random();   String suiji="";   int temp=0;   for(int i=0;i<4;i++){   temp=rd.nextInt(36);   suiji+=str[temp];   }   return suiji; }
    public void service(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   String sjm=suijima();   HttpSession session=request.getSession();   session.setAttribute("check",sjm); //在登录验证的时候会首先检查验证码是否输入正确       BufferedImage buffimg=new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);   Graphics g=buffimg.createGraphics();   Random rd=new Random();   int cr,cg,cb;   cr=rd.nextInt(255);   cg=rd.nextInt(255);   cb=rd.nextInt(255);   Color mycolor=new Color(cr,cg,cb);   //干扰线   g.setColor(mycolor);   for (int i = 0; i < 10; i++){             int x1 = rd.nextInt(60);             int x2 = rd.nextInt(60);             int y1 = rd.nextInt(20);             int y2 = rd.nextInt(20);             g.drawLine(x1, y1, x2, y2);         }    //显示随机码         Font myfont=new Font("times new roman",Font.PLAIN,19);         g.setFont(myfont);           g.setColor(Color.WHITE);         g.drawString(sjm,5,15);   //将图像输出到servlet输出流中。         ServletOutputStream sos=response.getOutputStream();         ImageIO.write(buffimg, "jpeg",sos);         sos.close();         g.dispose(); } }

    二、jsp页面,用jquery验证

    <body>
       <form method="post">
       用户名:<input type="text" name="username" id="username"/> <br>
    密  码: <input type="password" name="pwd" id="pwd"/><br>
    验证码:<input type="text" name="yzm" id="yzm"/>
    <img id="code" src="http://localhost:8080/javacode/check.do" onclick="javascript:change()" title="点击刷新验证码"><br>
    <input type="button" onclick="check()" value="登录"/>
    <input type="reset" name="reset" value="重置" />
    <div id="result"></div>
    </form>
      </body>
      <script language="javascript">
    function check()
    {
    var jqueryobj = $("#username");   
       var username = jqueryobj.val();
    var jqueryobj1 = $("#pwd");   
       var pwd = jqueryobj1.val();
       var jqueryobj2 = $("#yzm");   
       var yzm = jqueryobj2.val();
       var object =username+","+pwd+","+yzm;
     
       $.get("checkcode.do?object="+object,null,callback);  
    }
    function callback(data){
      if(data==1){
      data = "验证码出错,请重新输入!";
      }else if(data==2){
      data = "验证码正确!";
      }
      var resultObj = $("#result");  
      resultObj.html("<font color=red>"+data+"</font>");  
    }
    function change(){
       var dt = new Date();
      var img=document.getElementById("code");
      img.src="http://localhost:8080/javacode/check.do?dt"+dt;  //意思是让图片重新加载一次 效果类似与直接刷新yanzhengma.jsp有了这个,就能让图片重新加载了
      }
    </script>
    </html>

    三、后台验证

    package com.code;
    import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
    @SuppressWarnings("serial") public class Checkcode extends HttpServlet{ public void doPost(HttpServletRequest request,HttpServletResponse  response) throws IOException, ServletException{ String strYzm=request.getParameter("object"); //用户输入的验证码 String [] str = strYzm.split(",");    String stryz=(String)request.getSession().getAttribute("check"); //servlet中生成的验证码    int error;   response.setContentType("text/html;charset=GBK");   str[2]=str[2].toUpperCase();         PrintWriter out=response.getWriter();         if(!str[2].equals(stryz)){         error=1;         }else{         error=2;         }         out.println(error);    } public void doGet(HttpServletRequest request,HttpServletResponse  response) throws IOException, ServletException{ doPost(request,response); }
    }

    这样就可以完成登录页面的验证!

  • 相关阅读:
    webstorm实现手机预览页面
    git 远端版本回退
    Vue开发中的移动端适配(px转换成vw)
    测试web-view,实现小程序和网页之间的切换
    mysql 字符集研究
    Openssl
    Android Activity 去掉标题栏及全屏显示
    Android中的 style 和 theme
    Android sharedPreferences 用法
    Vim 字符集问题
  • 原文地址:https://www.cnblogs.com/ejllen/p/3723768.html
Copyright © 2011-2022 走看看