Servlet实现的验证码功能
来源:互联网 发布:mac 复制黏贴快捷键 编辑:程序博客网 时间:2024/05/20 23:35
首先servet中实现产生验证码的功能
package com.filter;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;@WebServlet("/image.do")public class ImageCodeServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { response.setContentType("image/jpeg"); // 通知服务器按图片的方式接受浏览器发送的东西 HttpSession session = request.getSession(); // 验证码图片的高度和宽度 int width = 60; int height = 20; StringBuffer randbuffer = new StringBuffer(); //禁止图片缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //获取image画笔 String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 从中选择随机数 char[] rands = new char[4]; //从chars字符串中随机选择四个字符保存在数组中 for(int i = 0; i < 4; i++) { int rand = (int) (Math.random() * 36); rands[i] = chars.charAt(rand); randbuffer.append(rands[i]); } session.setAttribute("randString", randbuffer.toString()); // 把验证码存在session中用以验证 System.out.println(session.getAttribute("randString")); //设置画笔颜色并用画笔填充矩形,左上角(0,0) g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, width, height); // 划120个小圆点 for(int i = 0; i < 120; i++) { int x = (int)(Math.random() * width); int y = (int)(Math.random() * height); int red = (int)(Math.random() * 255); //随机产生三色,使得小圆点颜色不一样 int green = (int)(Math.random() * 255); int blue = (int)(Math.random() * 255); g.setColor(new Color(red, green, blue)); g.drawOval(x, y, 1, 0); } // 设置画笔的颜色和字体 g.setColor(Color.BLACK); g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18)); //画四个字符 g.drawString("" + rands[0], 1, 17); g.drawString("" + rands[1], 16, 15); g.drawString("" + rands[2], 31, 18); g.drawString("" + rands[3], 46, 16); g.dispose(); ServletOutputStream out = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.flush(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; }}
可以在上面的产生随机数中选择验证码字符多个,根据实际需要进行适当修改边框大小
然后是一个简单的login.jsp页面访问
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><html><head></head><body><form method="post" action="login.do"><img alt="image" src="image.do"/></form></body></html>
- Servlet实现的验证码功能
- Servlet , 实现 验证码功能
- java web servlet来实现验证码的功能
- struts2、servlet实现验证码功能
- jsp+servlet实现验证码功能
- 使用Servlet实现网页验证码功能
- Servlet验证码功能
- Servlet-验证码功能
- JAVA验证码功能实现(生成验证码的Servlet)
- servlet验证码的实现
- 验证码的Servlet实现
- 验证码的Servlet实现
- 验证码的Servlet实现
- servlet生成验证码验证的实现
- 实现基础验证码功能的servlet(包括自己实现的算术验证码,加干扰线)
- Servlet实现带验证码登陆功能Demo
- java web开发:servlet中图形验证码功能的实现
- Servlet自学第24讲:Session应用—验证码功能的实现
- 输出不同形状的星号图
- canvas.drawBitmap()使图片全屏显示
- easy_install和pip区别
- JAVA学习笔记——数组
- java.sql.Timestamp
- Servlet实现的验证码功能
- 在前台运行Service
- 总结的一些PHP开发中的技巧
- windows下mongodb安装
- Struts2中关于"There is no Action mapped for namespace / and action name"的总结
- pl/sql developer 使用技巧
- 详解 Web service Axis2 JAVA调用.net接口 返回String的xml格式数据
- MYSQL用户权限管理(Grant,Revoke)
- javascript之excel2010简单读写