第一步:導入插件,放在/ValidateCode/WebContent/WEB-INF/lib/中.
下載地址: http://www.java2s.com/Code/Jar/k/Downloadkaptcha23jar.htm
第二步:配置web.xml
<servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/kaptcha.jpg</url-pattern>
</servlet-mapping>
第三步:畫頁面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function reloadCode(){
document.getElementById("imgCode").src="/ValidateCode/kaptcha.jpg"+Math.random();
}
</script>
</head>
<body>
<form action="/ValidateCode/kapServlet" method="post">
<label for="username">用戶名:</label>
<input type="text" id="username" name="username"><br>
<label for="pwd">密 碼:</label>
<input type="password" id="pwd" name="password"><br>
<label for="code">驗證碼:</label>
<input type="text" name="usercode">
<img src="/ValidateCode/kaptcha.jpg" id="imgCode" onclick="reloadCode()"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
action是表示向何處發送數據,寫完servlet驗證之後再填寫.
第四步:寫Servlet
package yyy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class KapServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
// 假設註冊的用戶名和密碼已經通過校驗,我還需要校驗驗證碼是否正確
// 獲取用戶在頁面輸入的驗證碼
String userCode = request.getParameter("usercode"); //要與表單中驗證碼輸入框中name屬性的值一樣.
// 獲取我們後臺生成的驗證碼的結果
String validateCodeResult =((String)request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY));
System.out.println(validateCodeResult);
// 比對兩個驗證碼是否一致
if(validateCodeResult.equals(userCode)) {
response.getWriter().write("恭喜,校驗成功!");
} else {
response.getWriter().write("很遺憾,校驗失敗!");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
第五步:繼續再配置web.xml
<servlet>
<servlet-name>KapServlet</servlet-name>
<servlet-class>yyy.servlet.KapServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>KapServlet</servlet-name>
<url-pattern>/kapServlet</url-pattern>
</servlet-mapping>
運行結果: