java验证码及其刷新

1.servlet产生验证码:

package com.servlet;

 

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
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 Img extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("image/jpeg");
  response.setHeader("Pragma","No-cache");
  response.setHeader("Cache-Control","no-cache");
  response.setDateHeader("Expires",0);
  
  OutputStream out=response.getOutputStream();
  int w=80,h=20;
  BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
  Graphics g=img.getGraphics();
  Random ran=new Random();
  g.fillRect(0, 0, w, h);
  g.setFont(new Font("Times New Roman",Font.ITALIC,18));
  String sRan="";
  for(int i=0;i<4;i++){
   String rand=String.valueOf(ran.nextInt(10));
   sRan+=rand;
   g.setColor(new Color(20+ran.nextInt(110),20+ran.nextInt(110),20+ran.nextInt(110)));
   g.drawString(rand,20*i+6,16);
  }
  request.getSession().setAttribute("ch", sRan);
  g.dispose();
  ImageIO.write(img, "jpeg", out);
  
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request, response);
 }

}

 

2.嵌入html中

<img src="Img" >

3.验证码的刷新

1)点击验证码刷新

<img src="Img" name="image" οnclick="document.all.image.src='Img'">

2)点击外部链接实现验证码刷新

<img src="Img" name="image" >看不清<a href="javascript:document.all.image.src='Img'">换一张</a>

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现验证码刷新,可以使用Java AWT库提供的绘图功能。以下是一种实现思路: 1. 创建一个继承自`Canvas`类的自定义验证码组件,命名为`CaptchaCanvas`。 ```java import java.awt.Canvas; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class CaptchaCanvas extends Canvas { private String captchaCode; public CaptchaCanvas() { // 添加鼠标点击事件监听器 addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { refreshCaptcha(); // 点击验证码刷新验证码 repaint(); // 重新绘制组件 } }); refreshCaptcha(); // 初始化验证码 } private void refreshCaptcha() { // TODO: 生成新的验证码 captchaCode = generateCaptcha(); } private String generateCaptcha() { // TODO: 随机生成验证码逻辑 return "1234"; // 示例返回固定验证码 } @Override public void paint(Graphics g) { super.paint(g); // 绘制验证码文本 g.drawString(captchaCode, 10, 20); } } ``` 2. 在你的应用程序中使用`CaptchaCanvas`组件。 ```java import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class CaptchaExample { public static void main(String[] args) { Frame frame = new Frame("Captcha Example"); frame.setLayout(new GridLayout(1, 1)); CaptchaCanvas captchaCanvas = new CaptchaCanvas(); frame.add(captchaCanvas); frame.setSize(200, 100); frame.setVisible(true); // 关闭窗口时退出程序 frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } } ``` 以上代码创建了一个简单的窗口应用程序,并在窗口中显示验证码。每次点击验证码时都会刷新验证码并重新绘制。你可以根据实际需求修改生成验证码的逻辑和验证码的绘制方式。 请注意,这只是一个简单的示例,实际应用中可能需要更复杂的验证码生成和绘制逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值