patchca整合Spring MVC生成超炫的验证码
@Controller
public
class
Login2Controller {
private
static
ConfigurableCaptchaService cs =
new
ConfigurableCaptchaService();
private
static
Random random =
new
Random();
static
{
// cs.setColorFactory(new SingleColorFactory(new Color(25, 60, 170)));
cs.setColorFactory(
new
ColorFactory() {
@Override
public
Color getColor(
int
x) {
int
[] c =
new
int
[
3
];
int
i = random.nextInt(c.length);
for
(
int
fi =
0
; fi < c.length; fi++) {
if
(fi == i) {
c[fi] = random.nextInt(
71
);
}
else
{
c[fi] = random.nextInt(
256
);
}
}
return
new
Color(c[
0
], c[
1
], c[
2
]);
}
});
RandomWordFactory wf =
new
RandomWordFactory();
wf.setCharacters(
"23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ"
);
wf.setMaxLength(
4
);
wf.setMinLength(
4
);
cs.setWordFactory(wf);
}
@RequestMapping
(
"/pcrimg"
)
public
void
crimg(HttpServletRequest request, HttpServletResponse response)
throws
IOException {
switch
(random.nextInt(
5
)) {
case
0
:
cs.setFilterFactory(
new
CurvesRippleFilterFactory(cs.getColorFactory()));
break
;
case
1
:
cs.setFilterFactory(
new
MarbleRippleFilterFactory());
break
;
case
2
:
cs.setFilterFactory(
new
DoubleRippleFilterFactory());
break
;
case
3
:
cs.setFilterFactory(
new
WobbleRippleFilterFactory());
break
;
case
4
:
cs.setFilterFactory(
new
DiffuseRippleFilterFactory());
break
;
}
HttpSession session = request.getSession(
false
);
if
(session ==
null
) {
session = request.getSession();
}
setResponseHeaders(response);
String token = EncoderHelper.getChallangeAndWriteImage(cs,
"png"
, response.getOutputStream());
session.setAttribute(
"captchaToken"
, token);
System.out.println(
"当前的SessionID="
+ session.getId() +
",验证码="
+ token);
}
protected
void
setResponseHeaders(HttpServletResponse response) {
response.setContentType(
"image/png"
);
response.setHeader(
"Cache-Control"
,
"no-cache, no-store"
);
response.setHeader(
"Pragma"
,
"no-cache"
);
long
time = System.currentTimeMillis();
response.setDateHeader(
"Last-Modified"
, time);
response.setDateHeader(
"Date"
, time);
response.setDateHeader(
"Expires"
, time);
}
}
patchca整合Spring MVC生成超炫的验证码的更多相关文章
- Hibernate validator使用和自定义validator及整合Spring MVC
http://blog.csdn.net/lwphk/article/details/43983669 Hibernate validator使用 导入validation-api-xxx.jar 以 ...
- spring mvc: 生成RSS源
spring mvc: 生成RSS源 准备: 从相同的maven存储库页面下载 Rome 库及其依赖项rome-utils,jdom和slf4j.和所需的依赖关系 <!-- rss源依赖 --& ...
- 【深度分析】:阿里,腾讯面试题 SpringBoot整合Spring MVC
Java学习总结 SpringBoot整合Spring MVC 1.SpringMVC概述 MVC(Model–view–controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为 ...
- Swagger+Spring mvc生成Restful接口文档
简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...
- spring mvc生成注册验证码
通过Spring MVC为系统添加验证码 1:布局登陆页面,用户名,密码,填写验证码的文本框,及验证码的图片及点击换图 <%@ taglib prefix="c" uri=& ...
- spring 整合 spring mvc
需要进行 Spring 整合 SpringMVC 吗 ? 还是否需要再加入 Spring 的 IOC 容器 ? 是否需要再 web.xml 文件中配置启动 Spring IOC 容器的 Context ...
- UEditor1.4.3.3整合Spring MVC和七牛
[前言] 项目中涉及将UEditor上传服务器整合进已有的基于Spring MVC的服务中,并且将上传到本地改为上传到七牛,看似简单的一个需求,实际做起来还是遇到了一些困难.在这里分享一下经验-- 七 ...
- MyBatis整合Spring MVC
前面几篇文章已经讲到了mybatis与spring 的集成.目前主流的Web MVC框架,除了Struts这个主力外,还有Spring MVC,主要是由于 Spring MVC 配置比较简单,使用起来 ...
- Spring MVC生成RSS源
下面的示例演示如何使用Spring Web MVC框架生成RSS源. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建 ...
随机推荐
- C#验证邮件
public static bool IsEmail(string email) { String strExp = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+( ...
- gist c code
http://lear.inrialpes.fr/software Fisher kernel: http://vision.caltech.edu/~sbranson/code/index.html ...
- 基于windows的ngnix基础使用
前言 今天组长一大早心血来潮的跟我说,我希望我们小组电脑做web站点的服务器集群,你搞一搞,就用ngnix吧. 君要臣死,臣不得不死.顺便写个文章做个笔记. 简介 Nginx 是一个高性能的HTTP和 ...
- show()与showDialog()的区别
A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDialog方法 (窗体显示为模式窗体) Form.Show方法 (窗体显示为无模式窗体) 2者具体区别如下: 1.在 ...
- Android开发之设定Dialog的位置
今天自定义了一个对话框,但是弹出时默认是显示在屏幕中间.主要代码:menuDialog = new AlertDialog.Builder(this).create(); ...
- Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...
- Android UI 开发
今天主要学习了Android UI开发的几个知识 6大布局 样式和主题→自定义样式.主题 JUnit单元测试 Toast弹窗功能简介 6大布局 RelativeLayout LinearLayout ...
- WPF 格式化输出- IValueConverter接口的使用
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这 ...
- 佛主保佑,永无bug
/* _ooOoo_ o8888888o 88" . "88 ...
- HTML5的你应该记住的一些知识点
刚开始学HTML5是从w3school开始的,那只是非常简单的一些了解,后面开始看一些xiongdilian的HTML5+CSS3的视频,照着视频做了一些简单的demo(需要的童鞋可以联系我,当然网上 ...