許多系統的註冊、登錄或發布信息模塊都添加隨機驗證碼,以防自動註冊或發布程序。驗證碼本質是隨機選擇字符以圖片形式展示,提交時需同時提交圖片字符,與服務端 Session 保存的比對,不一致則判定無效。為防自動識別,通常在圖片上加干擾線或扭曲字符。
使用 Servlet 實現,可通過 web.xml 配置寬高、字符數等參數。核心邏輯:
BufferedImage 畫布,填充白底、畫邊框A-Z, 0-9 隨機選取指定數量字符HttpSession(鍵:validateCode)<servlet>
<servlet-name>ValidateCodeServlet</servlet-name>
<servlet-class>com.servlet.ValidateCodeServlet</servlet-class>
<init-param><param-name>width</param-name><param-value>200</param-value></init-param>
<init-param><param-name>height</param-name><param-value>80</param-value></init-param>
<init-param><param-name>codeCount</param-name><param-value>5</param-value></init-param>
</servlet>
<servlet-mapping>
<servlet-name>ValidateCodeServlet</servlet-name>
<url-pattern>/validateCodeServlet</url-pattern>
</servlet-mapping>
頁面引用:<img src="validateCodeServlet" width="100" />
用戶提交時,將輸入驗證碼與 Session 中字符串比對即可驗證。