VerifyCodeServlet生成一次行验证码 并验证是否正确

一、依赖的jar包 链接:https://pan.baidu.com/s/13veKHrJYe_T2pq4cmZQ6TA 密码:i0y5

二、在web.xml中部署VerfiyCodeServlet

    <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>


三、在WEB-Root下面新建一个login.jsp文件    代码如下

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  <script type="text/javascript">
     function _hyz(){
        /*
        1.获取<img>元素
        2.给她的src指向/tools/VerifyCodeServlet
        */
        var img = document.getElementById("imgVerifyCode");
         //需要给出一个参数,这个参数每次都不同,这样才能干掉浏览器缓存!
        img.src="/tools/VerifyCodeServlet?a=" + new Date().getTime();
     }
  </script>






  </head>
  
  <body>
  <%--
  1.写表单,其中包含图片(验证码)
  2.让图片显示出来:
     把<img>的src指向VerifyCodeServlet,你需要在web.xml中部署VerfiyCodeServlet
  3.换一张
   --%>>
<form action="/tools/LoginServlet" method="post">
      <%--添加一个参数:method=login --%>>
      <input type="hidden"  name="method" value="login">
用户名:<input type="text" name="name"/><p/>
密    码: <input type="password" name="pwd"/><p/>
验证码:<input type="text" name="verifyCode"/><p/>
<img  src="/tools/VerifyCodeServlet" id="imgVerifyCode"/></br>
<input type="submit" value="提交">
<a  href="javascript:_hyz()">换一张</a>


<br/>
</form>
  </body>
</html>

四、针对上述代码的表单后台提交地址 我们新建一个名称为LoginServlet的Servlet (可以参照前面的博客BaseServlet) 具体代码如下

package cn.itcast.test.web.servlet;


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;


import cn.itcast.servlet.BaseServlet;


public class LoginServlet extends BaseServlet {




public String login(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
               //获取表单中输入的数据
               String verifyCode = request.getParameter("verifyCode");
              //获取验证码中真实的验证码 我们使用request.getSession()获得这个对象 在调用这个对象的.getAttribute方法 
              String vcode =  (String) request.getSession().getAttribute("vCode");
              //System.out.println(verifyCode.toString());
              //判断输入框输入的验证码是否跟session中的一致  不理会大小写
              System.out.println(verifyCode.equalsIgnoreCase(vcode));
              return null;
}


}

这样我们就完成了对表单验证码是否输入正确的校验,当输入一致  控制台会输出true 不一致的时候 输出false

猜你喜欢

转载自blog.csdn.net/tester_xjp/article/details/79761489