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