JavaWeb表单重复提交和验证码

 

 

 

使用验证码解决表单重复提交问题。

 

 

谷歌kaptcha图片验证码:

 

3.将图片地址放到验证码标签内

                                    <label>验证码:</label>
                                    <input class="itxt" type="text" name="code" style="width:130px;" id="code"/>
                                    <img id="code_img" alt="" src="kaptcha.jpg" style="float: right; margin-right: 40px;width:100px;height:40px;">
                                    <br />

4.在服务器获取谷歌生成的验证码并与客户输入的验证码进行比较

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取session中的验证码
        String token = (String)req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
        //删除session中的验证码
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);
        String code = req.getParameter("code");
        
        
        //获取用户名
        String username = req.getParameter("username");
        if(token != null && token.equalsIgnoreCase(code)) {
            System.out.println("保存到数据库"+ username);
            //比较用户名
//            req.getRequestDispatcher("/ok.jsp").forward(req, resp);//表单重复提交
            resp.sendRedirect("http://localhost:8080/tmp/ok.jsp");
        }else {
            System.out.println("请不要重复提交表单");
        }

    }

5.解决IE和火狐浏览器中验证码请求地址一致导致的缓存问题:请求地址添加时间戳作为参数

 

posted @ 2021-11-23 13:29  donkey8  阅读(132)  评论(0)    收藏  举报