生成随机验证码

网友投稿 597 2022-09-02

生成随机验证码

生成随机验证码

1.java代码如下:

package com.ask.session; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.import javax.servlet.import javax.servlet. /** * 输出一张随机图片 看jdk api 的bufferedImage类 */

public class Demo4 extends HttpServlet { public static final int WIDTH=120; public static final int HEIGHT=30; @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //构建一张图 BufferedImage image=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); //创建图形上下文 Graphics g=image.getGraphics(); //设置背景色 setBackgroundColor(g); //设置边框 // setBorder(g); //画干扰线 drawRandomLine(g); //写随机数 drawRandomNumber((Graphics2D)g); //图形输出到浏览器 res.setContentType("image/jpeg"); ImageIO.write(image, "jpg", res.getOutputStream()); }

private void drawRandomNumber(Graphics2D g) { //汉字区间:\u4100~\u9fa5 String base="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; String number=""; g.setColor(Color.BLUE); g.setFont(new Font("宋体", Font.BOLD,25)); int x=10; for (int i = 0; i < 4; i++) { //定义的旋转弧度30到-30的角度 int degree=new Random().nextInt()%30; number=base.charAt(new Random().nextInt(base.length()))+""; //让字体旋转30度 g.rotate(degree*Math.PI/180, x, 20); g.drawString(number, x, 23); //清楚旋转度数 g.rotate(-degree*Math.PI/180, x,20); x+=30; } }

private void drawRandomLine(Graphics g) { g.setColor(Color.gray); for (int i = 0; i < 8; i++) { int x1=new Random().nextInt(WIDTH); int y1=new Random().nextInt(HEIGHT); int x2=new Random().nextInt(WIDTH); int y2=new Random().nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } }

private void setBorder(Graphics g) { g.setColor(Color.BLUE); g.drawRect(1, 1, WIDTH-2, HEIGHT-2); }

private void setBackgroundColor(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, WIDTH, HEIGHT); } }

2.web.xml配置文件如下:

demo4 com.ask.session.Demo4 demo4 /demo4

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何利用 Shell 脚本来自动监控 Linux 系统的内存?(如何利用抖音赚钱)
下一篇:servlet中怎样加载配置文件以及读取配置文件的值
相关文章

 发表评论

暂时没有评论,来抢沙发吧~