servlet验证码
来源:互联网 发布:rnm网络是什么意思 编辑:程序博客网 时间:2024/06/10 12:30
package cn.itcast.demo;import java.awt.Color;import java.awt.Font;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;import javax.servlet.http.HttpSession;public class GetImageServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}/** *获得一张图片 */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int width = 80; //验证码的宽度 int height = 40; //验证码的高度//创建图片 -- 在内存中BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建图层,获得画板Graphics g = image.getGraphics();//确定画笔颜色g.setColor(Color.BLACK);//填充一个矩形g.fillRect(0, 0, width, height);//只需要一个边框//设置颜色g.setColor(Color.WHITE);//填充一个矩形g.fillRect(1, 1, width -2, height -2); //两个黑白块重叠了,效果就是一个黑色边框//填充字符String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//设置字体g.setFont(new Font("宋体",Font.BOLD,30));//缓存随机生成的字符StringBuffer buf = new StringBuffer();//随机获得4个字符Random random = new Random();for(int i = 0 ; i < 4 ; i++){//设置随机颜色g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));//获得一个随机字符int index = random.nextInt(62);//截取字符串String str = data.substring(index, index + 1); //[)//需要将随机的字符,写到图片中g.drawString(str, 20 * i, 30);//拼凑验证码内容buf.append(str);}//将获得随机字符串,保存到session// * 获得sessionHttpSession session = request.getSession();// * 保存值session.setAttribute("number", buf.toString());//干扰线for(int i = 0 ; i < 10 ; i ++){//设置随机颜色(可以指定颜色,放在一个数组里)g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));//随机画直线g.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));}/** * <extension>jpg</extension> * <mime-type>image/jpeg</mime-type> *///通知浏览器发送的数据是一张图片response.setContentType("image/jpeg"); //将图片发送给浏览器ImageIO.write(image, "jpg", response.getOutputStream());}}
使用:
<img src="/day07_demo/getImageServlet"/>
来自:传智梁桐老师session,cookie的代码
0 0
- jsp+servlet验证码验证
- servlet彩色验证码
- servlet实现验证码
- Servlet实现验证码
- 验证码servlet
- 验证码 servlet实现
- jsp servlet 验证码
- servlet+jsp 验证码
- servlet生成验证码
- servlet实现验证码
- Servlet 验证码
- servlet验证码
- Servlet验证码
- servlet生成验证码
- java验证码/servlet
- Servlet验证码源码
- 验证码 Servlet
- Servlet输出验证码
- 继续刷水题= =||分拆素数和 HDU 2098
- Android中的Bitmap集锦
- 数据结构的重要性
- Oracle的共享锁和排它锁
- html5(历史管理)
- servlet验证码
- popViewControllerAnimated 之后不走deallloc的几个原因:
- Java向前引用容易出错的地方
- Ants poj 1852
- JAVA : String StringBuilder String Buffer
- html5(历史管理)
- HTML布局和链接
- javascript 正则表达式
- ATTiny13单片机解433M超外差接收模块编码