zoukankan      html  css  js  c++  java
  • VerifyCodeServlet(一次性验证码)

    通过在表单中总是需要使用一次性验证码,这一问题可以使用VerifyCodeServlet来处理。让<img>元素的src指向VerifyCodeServlet即可在页面中生成一次性验证码。而且VerifyCodeServlet还会把验证码保存到session中,名称为:vCode,也就是说,你可以通过session来获取验证码文本:session.getAttribute(“vCode”)。

    web.xml
    <servlet>
      <servlet-name>VerifyCodeServlet</servlet-name>
      <servlet-class>cn.itcast.vcode.servlet.VerifyCodeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>VerifyCodeServlet</servlet-name>
      <url-pattern>/VerifyCodeServlet</url-pattern>
    </servlet-mapping>

    MyJsp.jsp

    <form action="<c:url value='/UserServlet'/>" method="post">
        <input type="hidden" name="method" value="regist"/>
        验证码:<input type="text" name="verifyCode"/>
    <!--让<img>的src指向VerifyCodeServlet即可生成一次性验证码-->
        <img src="<c:url value='/VerifyCodeServlet'/>"  border="1"/><br/>
        <input type="submit" value="注册"/>
    </form>

    因为用户可能看不清楚图片上的文本,所以我们需要给用户提供一个“换一张”超链接。其实实现这一步很简单,只需要使用javascript让<img>元素src指向VerifyCodeServlet即可。但因为浏览器可能会缓存上一次生成的图片,所以我们还需要使用时间为参数“强迫”浏览器访问服务器,而不是使用缓存。

    MyJsp.jsp
    <script type="text/javascript" src="<c:url value='/js/jquery-1.5.1.js'/>"></script>
        <script type="text/javascript">
        //在点击“换一张”时会调用本方法
            function change() {
                $("#img").attr("src", "<c:url value='/VerifyCodeServlet?'/>" + new Date().getTime());//指定<img>元素的src属性值为VerifyCodeServlet,并且追加参数为当前时间毫秒,它是不会重复的值,所以浏览器不会使用缓存,而是访问服务器。
            }
        </script><form action="<c:url value='/UserServlet'/>" method="post">
        <input type="hidden" name="method" value="regist"/>
        验证码:<input type="text" name="verifyCode"/>
    <!-- 指定id为img,方法使用jquery来查找该元素-->
        <img id="img"  src="<c:url value='/VerifyCodeServlet'/>" border="1"/>
        <a href="javascript:change();">换一张</a><!--点击该超链接会调用change()方法-->
        <br/>
        <input type="submit" value="注册"/>
    </form>

    当用户在表单中填写了验证码,而且提交了表单,到达UserServlet的regist()方法,在regist() 方法中需要比较用户在表单中输入的验证码,与验证码图片上的文本是否相同。

    • 获取用户输入的验证码:request.getParameter(“verifyCode”);
    • 获取图片上的验证码:session.getAttribute(“vCode”);
  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/suxiaoxia/p/6834119.html
Copyright © 2011-2022 走看看