Struts2自定义结果视图(servlet验证码)
发布日期:2021-05-09 04:57:44 浏览次数:20 分类:博客文章

本文共 2200 字,大约阅读时间需要 7 分钟。

1、编写一个类实现com.opensymphony.xwork2.Result,或者继承org.apache.struts2.dispatcher.StrutsResultSupport

 

2、自定义的结果视图,必须先声明后才能使用

200
50

 

servlet验证码代码:

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;public class AuthCodeDemo1 extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        int width=120,height=25;        //1.在内存生成一个图片        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);        //2.得到画笔        Graphics g = img.getGraphics();        //3.画一个矩形框        g.setColor(Color.BLUE);        g.drawRect(0, 0, width, height);        //4.填充背景        g.setColor(Color.YELLOW);        g.fillRect(1, 1, width-1, height-1);        //5.画一些干扰线条        g.setColor(Color.GRAY);        Random random = new Random();        for(int i=1;i<=20;i++)             g.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));        //6.画字符串随机的        g.setColor(Color.RED);        //设置字体        g.setFont(new Font("宋体",Font.BOLD|Font.ITALIC,20));        for(int i=1;i<=4;i++)            g.drawString(random.nextInt(10)+"", i*20,20);                //清除缓存        response.setHeader("Expires", "-1");        response.setHeader("Cache-Control", "no-cache");        response.setHeader("Pragma", "no-cache");                //7.输出        response.setContentType("image/jpeg");        ImageIO.write(img, "jpg", response.getOutputStream());    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doGet(request, response);    }}

 

 前台页面用Img标签的src属性指定action地址即可显示验证码。

 

上一篇:struts2自定义类型转换器
下一篇:java计算某日期之后的日期

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月13日 20时37分56秒