Html + Java登录验证码实现代码
生活随笔
收集整理的這篇文章主要介紹了
Html + Java登录验证码实现代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前端:
<div class="form-group"><label>驗證碼</label><div class="verify"><input class="form-control" style="width: 240px; display: inline-block;" name="check" type="text" placeholder="請輸入驗證碼" autocomplete="off"><span><img src="../checkCode/showCode" alt="" onclick="changeCheckCode(this)"></span><script type="text/javascript">//圖片點擊事件function changeCheckCode(img) {img.src="checkCode?"+new Date().getTime();}</script></div></div>后端代碼:
package com.hkd.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;@Controller @ResponseBody @RequestMapping("/checkCode") public class CheckCode {@RequestMapping("/showCode")public void showCode(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException {//服務器通知瀏覽器不要緩存response.setHeader("pragma", "no-cache");response.setHeader("cache-control", "no-cache");response.setHeader("expires", "0");//在內存中創建一個長80,寬30的圖片,默認黑色背景//參數一:長//參數二:寬//參數三:顏色int width = 80;int height = 30;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//獲取畫筆Graphics g = image.getGraphics();//設置畫筆顏色為灰色g.setColor(Color.GRAY);//填充圖片g.fillRect(0, 0, width, height);//產生4個隨機驗證碼,12EyString checkCode = getCheckCode();//將驗證碼放入HttpSession中session.setAttribute("CHECKCODE_SERVER", checkCode);//設置畫筆顏色為黃色g.setColor(Color.YELLOW);//設置字體的小大g.setFont(new Font("黑體", Font.BOLD, 24));//向圖片上寫入驗證碼g.drawString(checkCode, 15, 25);//將內存中的圖片輸出到瀏覽器//參數一:圖片對象//參數二:圖片的格式,如PNG,JPG,GIF//參數三:圖片輸出到哪里去ImageIO.write(image, "PNG", response.getOutputStream());}private String getCheckCode() {String base = "0123456789ABCDEFGabcdefg";int size = base.length();Random r = new Random();StringBuffer sb = new StringBuffer();for (int i = 1; i <= 4; i++) {//產生0到size-1的隨機值int index = r.nextInt(size);//在base字符串中獲取下標為index的字符char c = base.charAt(index);//將c放入到StringBuffer中去sb.append(c);}return sb.toString();} }后端校驗驗證碼代碼:
// 校驗驗證碼String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");session.removeAttribute("CHECKCODE_SERVER"); // 為了保證驗證碼只能使用一次if (checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)) {map.put("code", 1000);map.put("msg", "驗證碼錯誤,請刷新驗證碼后重新輸入");return map;} // 校驗驗證碼結束效果:
使用的是SSM-plus框架,基本上是通用的代碼。
總結
以上是生活随笔為你收集整理的Html + Java登录验证码实现代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux内核0.12完全注释
- 下一篇: java 图片合并成pdf_Java多张