# Kaptcha(驗證碼相關) ###### tags: `Java Web-常用知識點` 1. 為什麽需要驗證碼 - 透過驗證的方式,避免被人惡意攻擊 - 為了防止被破解,驗證碼型式也在不斷進化 3. kaptcha如何使用: - 添加jar ![](https://i.imgur.com/mbSyt4R.png) - 在web.xml文件中注冊KaptchaServlet,並設置驗證碼圖片的相關屬性 ```xml= <servlet> <servlet-name>KaptchaServlet</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> <init-param> <param-name>kaptcha.border.color</param-name> <param-value>red</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.string</param-name> <param-value>abcdefg</param-value> </init-param> <init-param> <!--去除干擾線--> <param-name>kaptcha.noise.impl</param-name> <param-value>com.google.code.kaptcha.impl.NoNoise</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>KaptchaServlet</servlet-name> <url-pattern>/kaptch.jpg</url-pattern> </servlet-mapping> ``` - 在html頁面上編寫一個img標簽,然後設置src等於KaptchaServlet對應的url-pattern ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src="kaptch.jpg"/> </body> </html> ``` 成果: ![](https://i.imgur.com/kIDJBnN.png) 3. kaptcha驗證碼圖片的各個屬性在常量接口:Constants中 ![](https://i.imgur.com/NUOmRJw.png) 4. KaptchaServlet在生成驗證碼圖片時,會同時將驗證碼信息保存到session中 因此,我們在注冊請求時,首先將用戶文本框中輸入的驗證碼值和session中保存的值進行比較,相等,則進行注冊 ```java= @WebServlet("/kaptcha01") public class KaptchaServletDemo01 extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession() ; Object obj = session.getAttribute("KAPTCHA_SESSION_KEY"); System.out.println("obj = " + obj); } } ```