Struts2自定义结果视图(servlet验证码)
1、编写一个类实现com.opensymphony.xwork2.Result,或者继承org.apache.struts2.dispatcher.StrutsResultSupport

2、自定义的结果视图,必须先声明后才能使用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<constant name="struts.devMode" value="true" />
<package name="p1" extends="struts-default">
<result-types>
<result-type name="captcha" class="com.itheima.results.CaptchaResult"></result-type>
</result-types>
<action name="genCaptcha">
<result name="success" type="captcha">
<param name="width">200</param>
<param name="height">50</param>
</result>
</action>
</package>
</struts>
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自定义结果视图(servlet验证码)的更多相关文章
- Struts2自定义类型转换,和处理类型转换错误
		
Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...
 - Struts2自定义拦截器Interceptor以及拦截器登录实例
		
1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...
 - Struts2自定义标签2自定义一个按班级id查询出该班级下的学生,存放进值栈,并遍历出来。
		
Struts2自定义标签的流程概念: (1)需要两个类:标签类(继承相应的tag类),基本类(继承Component).标签类专门负责从客户端取得用户输入的一些属性,这个普通的jsp自定义标签一样,取 ...
 - 案例17-validate自定义校验规则校验验证码是否输入正确
		
1 自定义校验规则代码 <script type="text/javascript"> //使用validate插件进行表单的校验 $(function(){ $(&q ...
 - [JavaWeb基础] 012.Struts2 自定义标签使用
		
在做开发中,我们会把一些比较经常使用到的代码封装起来,这样可以加快开发的速度和减少错误,并且在修改bug可以一次修改多次修复.那么在前端页面上,如果我们要经常用到公用的显示功能,并涉及到服务端逻辑操作 ...
 - struts2 自定义校验规则
		
自定义校验规则:(了解) 在Struts2自定义校验规则: 1.实现一个Validator 接口. 2.一般开发中继承ValidatorSupport 或者 FieldValidatorSupport ...
 - UICollectionView(集合视图)以及自定义集合视图
		
一.UICollectionView集合视图 其继承自UIScrollView. UICollectionView类是iOS6新引进的API,用于展示集合视图,布局 ...
 - DedeCMS提交自定义表单加入验证码功能
		
织梦dedecms网站给自定义表单加dede模板自带验证码的方法. 有时候,我们因为需要给dede网站的自定义表单添加验证码,防止恶意填写表单提交. 我们可以用以下的方法来实现: 首先,我们要找到 / ...
 - Android 自定义View修炼-自定义HorizontalScrollView视图实现仿ViewPager效果
		
开发过程中,需要达到 HorizontalScrollView和ViewPager的效果,于是直接重写了HorizontalScrollView来达到实现ViewPager的效果. 实际效果图如下: ...
 
随机推荐
- 面向切面编程(AOP)
			
一.引言: AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中 ...
 - android学习九 对话框碎片
			
1.android的对话框是异步的,对话框创建后马上执行下面的代码.好处: a.通过实现对话框的回调方法反馈用户与对话框的交互. b.能够在代码中清楚对话框. 2.碎片对话框基 ...
 - Qt-LCD电子时钟
			
先上效果图吧 就是这个样子,简单的时间显示时间. 这里需要注意的是,我们最好建立一个空文件,这里我们需要建立一个集成QLCDNumber的类 具体方法如下图 一下是源代码 digiclock.h #i ...
 - Qt 独立运行时伴随CMD命令窗口
			
用Qt写了一个小软件,在把程序release后,打包分装后,发现程序运行的时候会伴随cmd命令窗口,可把我愁怀了 不过功夫不负有心人,在老师和我网友的帮助下,终于搞完了 CONFIG:指定工程配置和编 ...
 - Web自动化测试环境搭建1(基于firefox火狐浏览器)
			
自动化测试是时代趋势,因此很多测试人员开始研究自动化测试,web自动化测试化测试并不难,但是很多人都是被挡在了环境搭建这一步,后面学习激情全无,这里,韬哥手把手教大家搭建火狐浏览器下的自动化测试环境( ...
 - Linux命令应用大词典-第30章 审计系统
			
30.1 auditctl:控制内核的审计系统 30.2 aureport:生成审计信息报表 30.3 ausearch:搜索审计记录 30.4 autrace:跟踪指定进程 30.5 audit-v ...
 - Linux命令大全(非常全,史上最全)
			
最近学习Linux,最大的体验就是它的很多东西都需要由命令来进行控制,下面是我总结的一些命令,供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 una ...
 - Unity制作人物头像小图标和小地图
			
人物头像的制作: 在场景中添加人物模型和环境模型 设置人物的layer为Player 在主摄像机的基础上,新建一个次摄像机并将摄像机镜头对准人物面部,调整至合适大小. 设置次摄像机 culling m ...
 - Django2.1新手图文入门教程
			
第一个django Web Django2.1新手图文入门教程 http://www.liujiangblog.com/blog/36/
 - spark写入ES(动态模板)
			
使用es-hadoop插件,主要使用elasticsearch-spark-20_2.11-6.2.x.jar 官网:https://www.elastic.co/guide/en/elasticse ...