- 浏览: 555290 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (145)
- apache-struts (3)
- apache-shiro (4)
- apache-wicket (1)
- spring (34)
- spring-data-jpa (2)
- spring-mvc (20)
- spring-security (1)
- spring-webflow (1)
- hibernate (2)
- mongodb (1)
- ibatis (5)
- mysql (4)
- 开源组件 (18)
- java (3)
- maven (7)
- jBPM (1)
- EJB (1)
- JMS (2)
- servlet / jsp (9)
- javascript / jquery (10)
- 工作技巧 (12)
- ubuntu (6)
- bootstrap (10)
- javaee (1)
- 他山石 (7)
- jetbrick (1)
最新评论
-
yubao2008:
[size=x-small]为什么我也这样试了, 就是没有生效 ...
javax.servlet.http.HttpServletResponse 得到 status_code -
chenrl:
...
SpringMVC杂记(十五) spring-mvc controller 的切面 -
LONGTENGLONG:
你好,这样配置的,得到的集合为空,是什么原因?
apache-shiro杂记(一) 统计在线用户数目 -
xiafengfeiwu:
[flash=200,200][url]引用[/url][/f ...
apache-shiro 学习笔记 -
3108493554:
你好 ,有些问题想请教下,加下我qq310849354,你这上 ...
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
以前写过一篇关于这个的博客,现在用SpringMVC了,重写一遍好了。
源代码在GitHub上
源代码在GitHub上
package com.github.yingzhuo.mycar.controller; 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.http.HttpSession; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.ByteArrayOutputStream; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class CaptchaController { public static final String CAPTCHA_SESSION_ATTR_NAME = UserController.class .getName() + "#CAPTCHA_SESSION_ATTR_NAME"; private static final HttpHeaders HTTP_HEADERS; private static final Random RANDOM; static { HTTP_HEADERS = new HttpHeaders(); HTTP_HEADERS.set("Pragma", "No-cache"); HTTP_HEADERS.set("Cache-Control", "No-cache"); HTTP_HEADERS.setDate("Expires", 0); HTTP_HEADERS.setContentType(MediaType.IMAGE_JPEG); RANDOM = new Random(); } private int width; private int height; @RequestMapping(value = "/images/captcha.jpeg") public ResponseEntity<byte[]> captcha(HttpSession session) throws IOException { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(getRandColor(200, 250)); g.fillRect(1, 1, width - 1, height - 1); g.setColor(new Color(102, 102, 102)); g.drawRect(0, 0, width - 1, height - 1); g.setFont(new Font("Times New Roman", Font.PLAIN, 17)); g.setColor(getRandColor(160, 200)); // 画随机线 for (int i = 0; i < 155; i++) { int x = RANDOM.nextInt(width - 1); int y = RANDOM.nextInt(height - 1); int xl = RANDOM.nextInt(6) + 1; int yl = RANDOM.nextInt(12) + 1; g.drawLine(x, y, x + xl, y + yl); } // 从另一方向画随机线 for (int i = 0; i < 70; i++) { int x = RANDOM.nextInt(width - 1); int y = RANDOM.nextInt(height - 1); int xl = RANDOM.nextInt(12) + 1; int yl = RANDOM.nextInt(6) + 1; g.drawLine(x, y, x - xl, y - yl); } // 生成随机数,并将随机数字转换为字母 String captchaStr = ""; for (int i = 0; i < 6; i++) { int itmp = RANDOM.nextInt(26) + 65; char ctmp = (char) itmp; captchaStr += String.valueOf(ctmp); g.setColor(new Color(20 + RANDOM.nextInt(110), 20 + RANDOM.nextInt(110), 20 + RANDOM.nextInt(110))); g.drawString(String.valueOf(ctmp), 15 * i + 10, 16); } g.dispose(); session.setAttribute(CAPTCHA_SESSION_ATTR_NAME, captchaStr); ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageIO.write(image, "JPEG", out); try { return new ResponseEntity<byte[]>(out.toByteArray(), HTTP_HEADERS, HttpStatus.OK); } finally { IOUtils.closeQuietly(out); } } private Color getRandColor(int fc, int bc) { if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + RANDOM.nextInt(bc - fc); int g = fc + RANDOM.nextInt(bc - fc); int b = fc + RANDOM.nextInt(bc - fc); return new Color(r, g, b); } // access method // ---------------------------------------------------------------------------------------------------------------------- @Value("100") public void setWidth(int width) { this.width = width; } @Value("18") public void setHeight(int height) { this.height = height; } }
发表评论
-
SpringMVC杂记(十八) ServletRequestAttributes的应用
2014-02-28 12:38 14139看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringMVC杂记(十七) HandlerMethodArgumentResolver接口应用example
2014-01-24 15:29 12151自从spring3.1 开始就有了这个接口,可以为@Reque ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1664今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十六) spring-mvc 与 openid4java
2013-10-12 15:25 3814SpringMVC杂记(十六) spring-mvc 与 op ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6060SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1522Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4480自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3349实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3149一)最近项目中要求实现Web应用的SSO(Single Sig ... -
通过spring,javamail,和freemarker集成发送HTML方式的电子邮件
2013-05-30 14:02 4819一) 现在项目中用的javamail和org.springfr ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6576SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1452package junit; import org. ... -
BootstrapPlugin - daterangepicker 使用笔记
2012-11-13 12:17 21005BootstrapPlugin - daterangepick ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26321) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102281) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7347上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8908我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7000SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4214SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12379SpringMVC杂记(五) JSR303数据验证 1) 首 ...
相关推荐
主要介绍了SpringMVC生成的验证码图片不显示问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
基于springmvc框架的代码生成器,生成包含bo、service、controller、增删改查jsp等文件。
基于SpringMVC annotation 的图形验证码 主要是controller的写法 实现前台验证码的显示 和刷新 验证功能相信大家都能写出来 访问 http://localhost:8080/SpringMVC_annotation_volidate/login jsp页面关键代码 ...
主要介绍了SpringMVC下获取验证码实例详解的相关资料,有些朋友可能知道如何在原生的 servlet 下返回生成的验证码图片/或者其他图片, 而不知道如何在 SpringMVC 下返回图片,需要的朋友可以参考下
此框架可自动生成SpringMvc+mybatis框架结构数据库采用的是mysql用户可以自行更改成自己需要的数据库,使用时将本项目导入myeclipse或eclipse中,更改项目名称为 你自定义的项目名称后在Test包中有2个java类...
java代码生成器、SpringMvc、三层、mybatis、mybatisPlus
花了一天写的,把这几个都整合了一起,包括事务SpringMVC4.0 + MyBatis3.2 + 验证码 + 邮箱 + Log4j.rar
本资源是基于Springmvc的图片上传案例,并对上传的图片添加了生成缩略图的功能。
NULL 博文链接:https://yingzhuo.iteye.com/blog/1453438
最新版java代码生成器基于springMvc+mysql 后台功能一键生成 压缩包里的jdk文件目录 请自行下载jdk1.8.0_45版本并覆盖进去 没有jdk是运行不起来的 也可以下载其他jdk版本 但是jdk1.8.0_45这个文件目录名称不要更改 ...
此框架可自动生成SpringMvc+mybatis框架结构数据库采用的是mysql用户可以自行更改成自己需要的数据库,使用时将本项目导入myeclipse或eclipse中,更改项目名称为 你自定义的项目名称后在Test包中有2个java类...
执行自动将数据库的表转化了类
本列springmvc采用freemarker动态生成word,并根据需求附带了word中添加图片的方法,将图片转换成Base64字符串,写入模板中。
主要为大家详细介绍了SpringMvc项目中使用GoogleKaptcha 生成验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于SpringMVC登录模块验证码的生成与校验,详细:http://blog.csdn.net/lazyrabbitlll/article/details/78458603
SpringMVC POI Excel 生成导出
NULL 博文链接:https://yingzhuo.iteye.com/blog/1455438
本篇文章主要介绍了springmvc下实现登录验证码功能示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了springMVC实现图形验证码(kaptcha)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
介绍使用jar包逆向生成mapping