验证码
2015-09-21 00:00
447 查看
摘要: 今天学习了一个登陆验证码,我相信如果每一天学习一点点,一定能成功的。
首先说一下jsp页面:
开始说servlet/CodeckServlet:
在得到数据后的判断,简单说一下:
首先说一下jsp页面:
[code=plain]<img alt="验证码" id="imagecode" src="<%=request.getContextPath() %>/servlet/CodeckServlet"/> //这里src=""中存储的是一个url,大概的意识是后面会把/输出到浏览器的页面上:ImageIO。
开始说servlet/CodeckServlet:
[code=plain]package web; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /* * 这个类不用变 * * */ public class CodeckServlet extends HttpServlet { public CodeckServlet() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建一副内存图片BufferedImage,这里面68为宽,28为高 BufferedImage bi = new BufferedImage(68,28,BufferedImage.TYPE_INT_RGB); //得到属于该图片的画笔:Graphics(); Graphics g = bi.getGraphics(); //调节颜色 Color c = new Color(180,181,181); //设置背景颜色 g.setColor(c); //设置背景颜色的范围 g.fillRect(0, 0, 68, 28); //设置随机验证中可能出现的字符 char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); //随机数 Random r = new Random(); int len=ch.length,index; StringBuffer sb = new StringBuffer(); for(int i=0; i<4; i++){ index = r.nextInt(len); g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255))); g.drawString(ch[index]+"", (i*15)+3, 18);//写什么数字,在图片什么位子画 sb.append(ch[index]);//拼接得到的验证码 } /*把生成的图片上的字母或者数字存放到session域中, * 在另一个校验的Servlet时,可以直接提取这里面的信息; * 方便校验; * */ request.getSession().setAttribute("piccode", sb.toString()); //以输出流的方式,将图片弄出来。 ImageIO.write(bi, "JPG", response.getOutputStream()); } public void init() throws ServletException { } }
在得到数据后的判断,简单说一下:
[code=plain]//前面我们把sb.toString(),存Session中,这里可以直接得到。 String piccode = (String) request.getSession().getAttribute("piccode"); /*获取页面填写的验证码的值*/ String checkcode = request.getParameter("checkcode"); checkcode = checkcode.toUpperCase(); //因为我们的随机数里面只有大写,所以这里把所有数据改成大写就ok了 if(!(checkcode.equals(piccode))){ //判断是不是一样的,然后继续后面操作。 }
相关文章推荐
- Spring MVC 全局的异常处理
- 前端架构那些事
- 在项目过程当中,执行力到底是什么-转
- Autolayout 中的 Visual format language
- 关于手机端显示页面一个像素的边框变粗的问题
- 天下数据详解香港VPS和美国VPS的区别
- 接口测试
- spring 中实现文件上传
- Android客户端和服务器端交互---数据库
- angularjs关于controller之间如何通讯
- 快速排序以及使用快排找中位数
- Ember.js 入门指南——表单元素
- Ember.js 入门指南——调试助手
- 从算法+数据结构到MVC
- centos 6.5 配置rsyslog
- mysql5.6 binlog实时异地备份之我见犹怜
- Phpstorm+xdebug配置
- OneAPM 云监控部署与试用体验
- 第26本:《注意力曲线----打败分心与焦虑》
- maven忽略测试的三种方法