- 浏览: 561916 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 14204看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringMVC杂记(十七) HandlerMethodArgumentResolver接口应用example
2014-01-24 15:29 12192自从spring3.1 开始就有了这个接口,可以为@Reque ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1708今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十六) spring-mvc 与 openid4java
2013-10-12 15:25 3866SpringMVC杂记(十六) spring-mvc 与 op ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6128SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1566Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4518自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3393实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3197一)最近项目中要求实现Web应用的SSO(Single Sig ... -
通过spring,javamail,和freemarker集成发送HTML方式的电子邮件
2013-05-30 14:02 4869一) 现在项目中用的javamail和org.springfr ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6622SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1499package junit; import org. ... -
BootstrapPlugin - daterangepicker 使用笔记
2012-11-13 12:17 21065BootstrapPlugin - daterangepick ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26851) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102681) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7422上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8977我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7047SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4276SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12428SpringMVC杂记(五) JSR303数据验证 1) 首 ...
相关推荐
在SpringMVC中,生成验证码图片需要使用@Controller注解的Controller类,通过@RequestMapping注解的方法来处理验证码图片的生成。在本例中,使用ValidateCodeController类来生成验证码图片,并将其输出到客户端。 ...
SpringMvc三层代码生成器是一种工具,它可以帮助Java开发者快速生成基于SpringMVC框架的三层架构代码,大大提高了开发效率和代码一致性。三层架构通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic...
j2eeGenerator-1.0是针对SpringMVC框架定制的一款代码生成工具,它的核心功能是自动生成与SpringMVC相兼容的Java代码,包括BO、Service、Controller以及对应的JSP页面。这样,开发者可以省去编写这些基础代码的时间...
SpringMVC实体层自动生成工具的主要功能包括: 1. 数据库表反向工程:工具能够连接到指定的数据库,读取数据库中的表结构信息,包括字段名、数据类型、主键等,并根据这些信息生成对应的Java实体类。这样,开发者...
基于SpringMVC annotation 的图形验证码 主要是controller的写法 实现前台验证码的显示 和刷新 验证功能相信大家都能写出来 访问 http://localhost:8080/SpringMVC_annotation_volidate/login jsp页面关键代码 ...
验证码的生成可以使用随机数和字体库来实现,例如使用Java的Random类和Font类来生成验证码图片。同时,需要使用springmvc的Controller来处理验证码的生成和验证。 例如,下面是一个简单的后端服务端编写示例: ```...
总结来说,"SpringMVC4.0+MyBatis3.2+验证码+邮箱+Log4j.rar"这个项目展示了一个完整的Web应用开发结构,涵盖了前端请求处理、后端业务逻辑、数据访问、安全验证和日志记录等多个关键环节,对于学习和理解这些技术的...
此框架可自动生成SpringMvc+mybatis框架结构数据库采用的是mysql用户可以自行更改成自己需要的数据库,使用时将本项目导入myeclipse或eclipse中,更改项目名称为 你自定义的项目名称后在Test包中有2个java类...
Java SpringMVC Mapping的逆向生成是一个自动化工具的使用过程,主要是为了减少手动编写XML映射文件的工作量,提高开发效率。在这个场景中,我们提到的是使用Mybatis-Generator来生成DAO(数据访问对象)、Model...
在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...
在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...
最新版java代码生成器基于springMvc+mysql 后台功能一键生成 压缩包里的jdk文件目录 请自行下载jdk1.8.0_45版本并覆盖进去 没有jdk是运行不起来的 也可以下载其他jdk版本 但是jdk1.8.0_45这个文件目录名称不要更改 ...
"SpringMVC POI Excel 生成导出" SpringMVC 是一个基于 Java 的 Web 框架,POI 是一个 Java 库,用于操作 Microsoft Office 文件格式,Excel 是一个电子表格软件。今天,我们将在 SpringMVC 中使用 POI 生成 Excel ...
此框架可自动生成SpringMvc+mybatis框架结构数据库采用的是mysql用户可以自行更改成自己需要的数据库,使用时将本项目导入myeclipse或eclipse中,更改项目名称为 你自定义的项目名称后在Test包中有2个java类...
这篇博文“SpringMVC:生成Excel和PDF”主要探讨了如何在SpringMVC应用中创建并导出两种常见文档格式——Excel和PDF。 Excel是Microsoft Office套件中的一个电子表格程序,而PDF(Portable Document Format)则是一...
用户提交的验证码会被发送到服务器端,后台程序会与预先存储的或生成的验证码进行比对。只有当用户输入的验证码与服务器端的一致时,注册流程才会继续。 6. **实现步骤**: - **前端界面**:`index.jsp`文件可能...
SpringMvc项目中使用GoogleKaptcha生成验证码是一项常见的安全措施,用于防止自动化程序(如机器人)对网站进行恶意操作。Google Kaptcha是一个强大的验证码生成库,它允许开发者自定义生成的验证码的样式和特性。在...
基于SpringMVC登录模块验证码的生成与校验,详细:http://blog.csdn.net/lazyrabbitlll/article/details/78458603
在本项目中,我们将探讨如何利用SpringMVC与Freemarker来动态生成带有图片的Word文档。 SpringMVC是Spring框架的一部分,它是一个强大的Model-View-Controller(MVC)架构,用于开发Java Web应用程序。它提供了模型...