目录
前言
验证码是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断地登录尝试。实际上用验证码是现在很多网站同行的方式。我们利用比较简单的方式实现这个功能。这个问题可以由计算机生成并评判。但是必须只有人类才能解答。由于计算机无法解答CAPTCHA问题,所以回答问题的用户就可以被认为是人类。
创建验证码
使用 ValidateCode.jar 包创建验证码
创建web项目
创建Web项目,导入 Servlet-api.jar 、ValidateCode.jar 包
登录页面
Login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理员登录页面</title>
<link type="text/css" rel="stylesheet" href="css/Login.css"/>
</head>
<body>
<div>
<form action="LoginMgrController" method="post">
<p>
账号:<input type="text" name="username"/>
</p>
<p>
密码:<input type="password" name="password"/>
</p>
<p>
验证码:<input tyle="text" name="verification "/>
<img src="/ValidateCode/validatecodedemo"/>
</p>
<p>
<input type="submit" value="登录"/>
</p>
</form>
</div>
</body>
</html>
Login.css
* {
margin: 0;
padding: 0;
}
div {
width: 270px;
height: 150px;
background-color: #ccc;
margin: 30px auto;
padding: 20px;
text-align: left;
}
p {
margin-top: 10px;
}
[type="text"],[type="password"]{
width: 200px;
}
[name="verification "]{
width: 180px;
}
[name="verification "]~img{
vertical-align: middle;
}
input {
outline: none;
}
ValidateCodeDemo.java
package cn.work;
import cn.dsna.util.images.ValidateCode;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/validatecodedemo")
public class ValidateCodeDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建对象并设置验证码长、宽、验证码个数、干扰线条数
ValidateCode validateCode = new ValidateCode(100,30,4,30);
//获取验证码
String code = validateCode.getCode();
//如有需要可以将获取到的验证码保存到session中
HttpSession session = req.getSession();
session.setAttribute("code",code);
//将验证码输入到客户端
validateCode.write(resp.getOutputStream());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
运行服务器得到验证码