Session应用之验证码

 1 package com.aeolia.view;
 2
 3 import java.awt.Color;
 4 import java.awt.Font;
 5 import java.awt.image.BufferedImage;
 6 import java.io.IOException;
 7 import javax.imageio.ImageIO;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 public class CheckCode extends HttpServlet {
14     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
15
16         //禁止浏览器缓存随即图片
17         response.setDateHeader("Expires", -1);
18         response.setHeader("Cache-Control", "no-cache");
19         response.setHeader("Pragma", "no-cahce");
20         //通知客户机以图片方式打开发送过去的数据
21         response.setHeader("Content-Type","image/jpeg");
22         //在内存中创建一幅图片
23         java.awt.image.BufferedImage image=new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);
24         //向图片上写数据
25         java.awt.Graphics g=image.getGraphics();
26         //设置背景色
27         g.setColor(Color.white);
28         //设置矩形框
29         g.fillRect(0,0,80,30);
30         //设置背景色写入数据的字体和颜色
31         g.setColor(Color.red);
32         g.setFont(new Font(null,Font.BOLD,20));
33         //向图片上写数据
34         String nums=makeNums();
35         request.getSession().setAttribute("checkcode", nums);
36         g.drawString(nums, 0,20);
37         //把写好的数据的图片输出给浏览器
38         ImageIO.write(image, "jpg", response.getOutputStream());
39     }
40     private String makeNums() {
41         java.util.Random r=new java.util.Random();
42         String nums=r.nextInt(9999)+"";
43         StringBuffer sb=new StringBuffer(nums);
44         for(int i=0;i<4-nums.length();i++){
45             sb.append("0");
46         }
47         return sb.toString();
48     }
49     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
50
51         this.doGet(request, response);
52     }
53 }
时间: 2024-10-22 21:33:52

Session应用之验证码的相关文章

PHP GD 生成图片验证码+session获取储存验证码

下面分享一个PHP制作的图片验证码案例:案例如下图: 运用PHP GD详细请看:http://www.php.net/manual/zh/book.image.php 后台图片代码如下: <?php session_start(); $image = imagecreatetruecolor(100,30);//创建一个宽100,高度30的图片 $bgcolor=imagecolorallocate($image,255,255,255);//图片背景是白色 imagefill($image,0

Session中短信验证码设置有效时间

Session中短信验证码设置有效时间 package com.mozq.boot.kuayu01.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; import java.text.Simple

简单的Session案例 —— 一次性验证码

一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码,其原理与利用Session防止表单重复提交的原理基本一样,只是将表单标识号变成了验证码的形式,并且要求用户将提示的验证码手工填写进一个表单字段中,而不是通过表单的隐藏字段自动回传给服务器. 服务器程序接收到表单数据后,首先判断用户是否填写了正确的验证码,只有该验证码与服务器端保存的验证码匹配时,服务器程序才开始正常的表单处理流程. 密码猜测工具要逐一尝试每个密码的前题条件是先输入正确的验证码,而验证码是一次性有效的,这样基本上就阻

jsp中生成的验证码和存在session里面的验证码不一致的处理

今天在调试项目的时候发现,在提交表单的时候的验证码有问题,问题是这样的:就是通过debug模式查看得知:jsp页面生成的验证码和表单输入的页面输入的一样,但是到后台执行的时候,你会发现他们是不一样的,现在上图看看: 1.这是表单提交的时候: 2.这是后台得到的生成的验证码: 3.这是后台得到输入的验证码: 这样的问题还是头一次出现,以前没遇到过,经过google,baidu,最后得知是这样的:因为加载jsp页面比加载session快一些 那怎么办才能解决这个办法呢, 又经过多次搜索,思考,实践,

关于用户禁用Cookie的解决办法和Session的图片验证码应用

当用户通过客户端浏览页面初始化了Session之后(如:添加购物车,用户登陆等),服务器会将这些session数据保存在:Windows保存在C:\WINDOWS\Temp的目录下,Linux则是保存在/tmp 或 /var/lib/php/session目录下,之后给客户端返回一个Set-Cookie的参数(该参数表示在服务器端创建的Session_ID,可在http协议中看到),当该服务器的其他web端需要Session数据时则客户端会向服务器发送这个Session_ID,服务器就可以从Se

JavaWeb 使用Session实现一次性验证码

表单 <form action="loginServlet" method="post"> 请输入验证码:<input type="text" name="code" /> <img src="getCodeServlet" /><br /> <button type="submit">提交</button> <

Nginx 下无法读取session 导致 thinkphp验证码错误

打开php配置文件 php.ini 使用搜索命令 whereis php.ini 一般在:/etc/php.ini 目录下 使用vim命令打开 找到: session.save_path 找到php保持session文件的目录. 如果目录不存在则创建 使用chmod授予777权限.

Laravel中使用Session存取验证码信息

1.将验证码存储到session中. $request->session()->put('validate_code',$validateCode->getCode());//存储信息 2.将session中的验证码取出来与用户输入的验证进行匹配验证. $request->session()->get('validate_code');//取出信息

PHPCMS v9 二次开发_验证码结合Session开发

本文主要讲解了在V9中使用v9自带验证码并且需要使用session的情况下,多种问题的解决.:).如有问题或者更好的解决办法,希望不吝赐教. 1.前端调用验证码 pc_base::load_sys_class('form', '', 0); {form::checkcode('code_img', '4', '14', 120, 26)} 2.管理端验证码验证 $code = isset($_POST['code']) && trim($_POST['code']) ? trim($_PO