session.setAttribute("code", codeMap.get("code").toString()); // 禁止图像缓存。 resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); resp.setDateHeader("Expires", -1); resp.setContentType("image/jpeg");
时间: 2023-07-03 14:08:02 浏览: 152
这段代码的作用是生成一个验证码图片并将验证码存储在session中,同时设置响应头信息禁止图像缓存,以确保每次请求都能获得一个新的验证码图片。
具体来说,代码中的`setAttribute`方法将生成的验证码字符串存储在名为"code"的session属性中。`setHeader`方法设置了三个响应头信息,分别是"Pragma"、"Cache-Control"和"Expires",这些信息都是为了防止浏览器缓存验证码图片。`setContentType`方法设置响应类型为"image/jpeg",即告诉浏览器返回的是一个JPEG格式的图片。
相关问题
@RequestMapping("/front/getCode") public void getCode(HttpSession session, HttpServletResponse resp){ // 调用工具类生成的验证码和验证码图片 Map<String, Object> codeMap = CodeUtil.generateCodeAndPic(); session.setAttribute("code", codeMap.get("code").toString()); // 禁止图像缓存。 resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); resp.setDateHeader("Expires", -1); resp.setContentType("image/jpeg"); // 将图像输出到Servlet输出流中。 ServletOutputStream sos; try { sos = resp.getOutputStream(); ImageIO.write((RenderedImage) codeMap.get("codePic"), "jpeg", sos); sos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 跳转学生注册页
*/ @RequestMapping("/front/register") public String register(){ return "front/register"; } /** * 学生注册 * @param student * @param session * @param model * @param code * @return */ @RequestMapping("/front/doRegister") public String doRegister(Student student, HttpSession session, Model model, String code){ // 判断验证码是否正确 String sessionCode = (String) session.getAttribute("code"); if(!code.equalsIgnoreCase(sessionCode)){ model.addAttribute("msg", "验证码错误"); return "front/register"; } // 判断用户名是否已存在 Student existStudent = studentService.findByUsername(student.getUsername()); if(existStudent != null){ model.addAttribute("msg", "用户名已存在"); return "front/register"; } // 注册用户 studentService.save(student); return "redirect:/front/login"; }
阅读全文