页面登录的验证码
一个简单的登录时候需要输入的验证码
- jsp代码
<tr><td>验证码:</td><td><input type="text" name="validataCode" /><img style="cursor:pointer;" title="点击更换" src="CodeServlet"onclick="this.src = 'CodeServlet?'+Math.random();"/><span style="color:red">${requestScope.messagecode}</span></td>
</tr>
- CodeServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 此方法生成一张图片Random r = new Random();// 1.创建空白图片 长 宽 三原色BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);// 2.获取图片的画笔Graphics g = image.getGraphics();// 3.设置画笔的颜色 画背景g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));// 4.绘制矩形画布 从(0,0) 开始画长100宽30g.fillRect(0, 0, 100, 30);// 5.调用有个自定义方法,获取一个长度为五的字母和数字的字符串String number = this.getNumber(5);// 6.把随机生成的验证码存储在session中HttpSession session = request.getSession();session.setAttribute("code", number);// 7.重新设置画笔, 画验证码// 颜色为黑色g.setColor(new Color(0, 0, 0));// 名称 样式 大小g.setFont(new Font(null, Font.BOLD, 24));// 8.绘制验证码 画的数字 位置(5,25)g.drawString(number, 5, 25);// 9.绘制八条干扰线 for (int i = 0; i < 8; i++) {//设置画线的画笔的颜色g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));//从(x1,y1)滑到(x2,y2)g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));}//10.设置响应内容response.setContentType("image.html");OutputStream os = response.getOutputStream();//11.把image图片写到响应中(写到网络输输出流上)// 图片 图片格式 ImageIO.write(image, "jpeg", os);os.flush();os.close();}private String getNumber(int size) {String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";String number = "";Random r = new Random();for (int i = 0; i < size; i++) {number += str.charAt(r.nextInt(str.length()));}return number;}
- UserLoginServlet
// 获取用户输入的验证码String validateCode = request.getParameter("validataCode");// 从session中获取系统生成的验证码HttpSession session = request.getSession();String code = session.getAttribute("code").toString();if (validateCode.equalsIgnoreCase(code)) {//登录的操作//如判断用户名密码是否正确以及做出相应的响应操作}else{request.setAttribute("messagecode", "验证码错误");request.getRequestDispatcher("login.jsp").forward(request, response);}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
