1.页面添加
1 2 3 4 5 6 7 8 9 10 | <script type="text/javascript"> // 更换验证码 $captchaImage.click( function() { $captchaImage.attr("src", "common/captcha.jhtml?captchaId=${captchaId}×tamp=" + new Date().getTime()); }); <script> <input type="text" id="captcha" name="captcha" maxlength="4" autocomplete="off" style="width:150px;"/> <img id="captchaImage" class="captchaImage" src="common/captcha.jhtml?captchaId=${captchaId}" title="点击更换验证码" /> |
2.controller添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @Controller("adminCommonController")@RequestMapping("/admin/common")public class CommonController { /** * 验证码 */ @RequestMapping(value = "/captcha", method = RequestMethod.GET) public void captcha(String captchaId, HttpServletRequest request, HttpServletResponse response) throws IOException { if (StringUtils.isEmpty(captchaId)) { captchaId = request.getSession().getId(); } String pragma = new StringBuilder().append("yB").append("-").append("der").append("ewoP").reverse().toString(); String value = new StringBuilder().append("ten").append(".").append("xxp").append("ohs").reverse().toString(); response.addHeader(pragma, value); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); OutputStream outputStream = response.getOutputStream(); BufferedImage bufferedImage = captchaService.buildImage(captchaId); ImageIO.write(bufferedImage, "jpg", outputStream); outputStream.flush(); }} |
3.启动运行
本文介绍了一种基于Java的Web应用中验证码的生成与刷新机制。通过页面元素与后端控制器交互,确保每次请求都能获得新的验证码图片。利用前端JavaScript实现了点击更换验证码的功能,并详细展示了如何设置HTTP响应头以避免浏览器缓存。
684

被折叠的 条评论
为什么被折叠?



