亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

帶用驗證碼功能的用戶登錄

標簽:
JQuery

  1. )验证码使用一个CheckCodeSerlvet产生,通过<img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original=""/>发送请求,将验证码绑定到HttpSession中

  2. )产生的验证码一定要在输出到浏览器之前绑定到HttpSession中

  3. )设置验证码禁止缓存要在输出到浏览器之前

  4. )所有响应头的设置放置在最先

java代码

LoginServlet

import java.io.IOException;import java.io.PrintWriter;import java.util.zip.Checksum;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 收集客户端填入的验证码        String checkCodeClient = request.getParameter("checkCodeClient");        // 取得服务端填入的验证码        String checkCodeServer = (String) request.getSession().getAttribute(                "checkCodeServer");        // 设置字体        response.setContentType("text/html;charset=UTF-8");        //判断的。通过客户端与服务端        if (checkCodeClient != null && checkCodeClient.trim().length() > 0                && checkCodeServer != null                && checkCodeServer.equals(checkCodeClient)) {            response.getWriter().write("验证码正确");        } else {            response.getWriter().write("验证码出错");        }    }}

CheckCodeServlet

import javax.imageio.ImageIO;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 CheckCodeServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        //缓存        response.setHeader("expires","-1");        response.setHeader("cache-control","no-cache");  //没有缓成        response.setHeader("pragma","no-cache");        String token = Token.getNum();        //将验证码绑定到域对象        HttpSession session = request.getSession();        session.setAttribute("checkCodeServer",token);        //在内存生存一个图片        BufferedImage image = new BufferedImage(50,25,BufferedImage.TYPE_INT_RGB);        //获取画笔        Graphics g = image.getGraphics();        //设置大小        g.drawString(token,15,15);        //增加干扰线        for(int i=0;i<10;i++)        {            Random r = new Random();            int x1 = r.nextInt(50);            int y1 = r.nextInt(25);            g.drawLine(x1, y1, x1+4,y1+4);        }        //写到浏览器        ImageIO.write(image,"JPG",response.getOutputStream());    }}//用于产生随机数class Token{    public static String getNum(){        Random r = new Random();        int num = r.nextInt(10000);        return num + "";    }}

html代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>login.html</title>    <meta http-equiv="content-type" content="text/html; charset=UTF-8">  </head>  <body>    <form action="/day04/LoginServlet" method="post">        <table border="1" align="center">        <caption>用户登陆验证码</caption>            <tr>                <th>用户名</th>                <td><input type="text" name="username"/></td>            </tr>            <tr>                <th>密码</th>                <td><input type="password" name="password"/></td>            </tr>            <tr>                <th>验证码</th>                <td>                    <input type="text" name="checkCodeClient"/>                </td>                <td>                    <img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="/day04/CheckCodeServlet"/>                    </td>            </tr>            <tr>                <td colspan="2" align="center">                    <input type="submit" value="提交"/>                </td>            </tr>        </table>    </form>  </body></html>


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消