
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地址即可显示验证码。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月13日 20时37分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
POD类型
2019-03-06
Head First设计模式——迭代器模式
2019-03-06
记一次讲故事机器人的开发-我有故事,让机器人来读
2019-03-06
netcore中使用session
2019-03-06
远程触发Jenkins的Pipeline任务的并发问题处理
2019-03-06
【wp】HWS计划2021硬件安全冬令营线上选拔赛
2019-03-06
Ef+T4模板实现代码快速生成器
2019-03-06
Java面试题:Servlet是线程安全的吗?
2019-03-06
Linux探测工具BCC(可观测性)
2019-03-06
采坑 - 字符串的 "" 与 pd.isnull()
2019-03-06
《我是猫》总结
2019-03-06
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
Python 之网络式编程
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06