- 浏览: 186394 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (131)
- CMS内容管理系统 (3)
- 支付宝实习之旅 (1)
- javaSE (5)
- myEclipse (1)
- DWR (0)
- strut2 (6)
- spring (4)
- hibernate (6)
- jquery (26)
- extjs (0)
- oracle (1)
- flex (10)
- ajax (0)
- jsp (3)
- java (4)
- JavaScript (4)
- css+div (5)
- Java面试 (3)
- java设计模式 (2)
- Think in java 笔记 (2)
- dom4j (1)
- JDBC (1)
- 经典方法学习 (1)
- windows常用操作 (1)
- maven (1)
- 75道经典逻辑题及答案 (1)
- mysql (3)
- jqueryDemo(插件) (3)
- php (14)
- ubuntu (6)
- 记事本 (1)
- php缓存 (1)
- 编程思想 (5)
- wamp (1)
- android (2)
- xml (1)
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
CSS按钮(研究) -
javaCrazy!:
监听一个keyup事件
jquery 监听input输入值事件 -
丶月满灬西楼彡:
问个问题:假如用户在Input中输入了“12345”,但后来又 ...
jquery 监听input输入值事件
一、servlet实现验证码的生成:
第一步:
web.xml配置
01.<servlet> 02. <servlet-name>image</servlet-name> 03. <servlet-class>org.test.web.AuthImage</servlet-class> 04.</servlet> 05. 06.<servlet-mapping> 07. <servlet-name>image</servlet-name> 08. <url-pattern>/authImage</url-pattern> 09.</servlet-mapping>
第二步:
servlet配置:
01.public class AuthImage extends HttpServlet 02.{ 03. 04. private static final String CONTENT_TYPE = "text/html; charset=gb2312"; 05. //设置字母的大小,大小 06. private Font mFont = new Font("Times New Roman", Font.PLAIN, 17); 07. public void init() throws ServletException 08. { 09. super.init(); 10. } 11. Color getRandColor(int fc,int bc) 12. { 13. Random random = new Random(); 14. if(fc>255) fc=255; 15. if(bc>255) bc=255; 16. int r=fc+random.nextInt(bc-fc); 17. int g=fc+random.nextInt(bc-fc); 18. int b=fc+random.nextInt(bc-fc); 19. return new Color(r,g,b); 20. } 21. 22. public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 23. { 24. response.setHeader("Pragma","No-cache"); 25. response.setHeader("Cache-Control","no-cache"); 26. response.setDateHeader("Expires", 0); 27. //表明生成的响应是图片 28. response.setContentType("image/jpeg"); 29. 30. int width=100, height=18; 31. BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 32. 33. Graphics g = image.getGraphics(); 34. Random random = new Random(); 35. g.setColor(getRandColor(200,250)); 36. g.fillRect(1, 1, width-1, height-1); 37. g.setColor(new Color(102,102,102)); 38. g.drawRect(0, 0, width-1, height-1); 39. g.setFont(mFont); 40. 41. g.setColor(getRandColor(160,200)); 42. 43. //画随机线 44. for (int i=0;i<155;i++) 45. { 46. int x = random.nextInt(width - 1); 47. int y = random.nextInt(height - 1); 48. int xl = random.nextInt(6) + 1; 49. int yl = random.nextInt(12) + 1; 50. g.drawLine(x,y,x + xl,y + yl); 51. } 52. 53. //从另一方向画随机线 54. for (int i = 0;i < 70;i++) 55. { 56. int x = random.nextInt(width - 1); 57. int y = random.nextInt(height - 1); 58. int xl = random.nextInt(12) + 1; 59. int yl = random.nextInt(6) + 1; 60. g.drawLine(x,y,x - xl,y - yl); 61. } 62. 63. //生成随机数,并将随机数字转换为字母 64. String sRand=""; 65. for (int i=0;i<6;i++) 66. { 67. int itmp = random.nextInt(26) + 65; 68. char ctmp = (char)itmp; 69. sRand += String.valueOf(ctmp); 70. g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); 71. g.drawString(String.valueOf(ctmp),15*i+10,16); 72. } 73. 74. HttpSession session = request.getSession(true); 75. session.setAttribute("rand",sRand); 76. g.dispose(); 77. ImageIO.write(image, "JPEG", response.getOutputStream()); 78. } 79. public void destroy() 80. { 81. } 82.}
第三步:
页面访问:
01.<img src="authImage"/>
二、纯jsp实现验证码的生产
第一步:
jsp代码:
01.<%@ page language="java" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" 02. contentType="image/jpeg" pageEncoding="UTF-8"%> 03. 04. 05.<% //设置页面不缓存 06. response.setHeader("Pragma","No-cache"); 07. response.setHeader("Cahce-Control","no-cache"); 08. response.setDateHeader("Expires",0); 09. //在内存中创建图片 10. int width=60,height=20; 11. BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); 12. //获取图形上下文 13. Graphics g= image.getGraphics(); 14. //生成随机类 15. Random random= new Random(); 16. //设置背景颜色 17. g.setColor(new Color(160,200,100)); 18. g.fillRect(0,0,width,height); 19. //设置字体 20. g.setFont(new Font("Times New Roman",Font.PLAIN,18)); 21. //随机产生50条干扰线,使图形中的验证码不易被其他的程序探测到 22. g.setColor(new Color(160,200,200)); 23. for(int i=0;i<50;i++) 24. { 25. int x=random.nextInt(width); 26. int y=random.nextInt(height); 27. int x1=random.nextInt(width); 28. int y1=random.nextInt(height); 29. g.drawLine(x,y,x+x1,y+y1); 30. } 31. //随机产生验证码(6位数字) 32. String sRand=""; 33. for(int i=0;i<6;i++) 34. { 35. String rand=String.valueOf(random.nextInt(10)); 36. sRand+=rand; 37. //将验证码显示到图象 38. g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); 39. g.drawString(rand,13*i+6,16); 40. } 41. session.setAttribute("rand",sRand); //////将产生的验证码存储到sesson中 42. g.dispose(); 43. ImageIO.write(image,"JPEG",response.getOutputStream()); 44. out.clear(); //*********** 45. out=pageContext.pushBody();//********** 46. %>
第二步:
页面访问:
01.<img src="xxx.jsp"/>
三、struts实现验证码生成:
第一步:
工具类RandomNumUtil 代码:
01.package com.cn.hospital.util; 02. 03.import java.awt.Color; 04.import java.awt.Font; 05.import java.awt.Graphics; 06.import java.awt.image.BufferedImage; 07.import java.io.ByteArrayInputStream; 08.import java.io.ByteArrayOutputStream; 09.import java.util.Random; 10.import javax.imageio.ImageIO; 11.import javax.imageio.stream.ImageOutputStream; 12. 13.public class RandomNumUtil { 14. 15. private ByteArrayInputStream image;//图像 16. private String str;//验证码 17. 18. private RandomNumUtil(){ 19. init();//初始化属性 20. } 21. /* 22. * 取得RandomNumUtil实例 23. */ 24. public static RandomNumUtil Instance(){ 25. return new RandomNumUtil(); 26. } 27. /* 28. * 取得验证码图片 29. */ 30. public ByteArrayInputStream getImage(){ 31. return this.image; 32. } 33. /* 34. * 取得图片的验证码 35. */ 36. public String getString(){ 37. return this.str; 38. } 39. 40. private void init() { 41. // 在内存中创建图象 42. int width=85, height=20; 43. BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 44. // 获取图形上下文 45. Graphics g = image.getGraphics(); 46. // 生成随机类 47. Random random = new Random(); 48. // 设定背景色 49. g.setColor(getRandColor(200,250)); 50. g.fillRect(0, 0, width, height); 51. // 设定字体 52. g.setFont(new Font("Times New Roman",Font.PLAIN,18)); 53. // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 54. g.setColor(getRandColor(160,200)); 55. for (int i=0;i<155;i++) 56. { 57. int x = random.nextInt(width); 58. int y = random.nextInt(height); 59. int xl = random.nextInt(12); 60. int yl = random.nextInt(12); 61. g.drawLine(x,y,x+xl,y+yl); 62. } 63. // 取随机产生的认证码(6位数字) 64. String sRand=""; 65. for (int i=0;i<6;i++){ 66. String rand=String.valueOf(random.nextInt(10)); 67. sRand+=rand; 68. // 将认证码显示到图象中 69. g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); 70. // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 71. g.drawString(rand,13*i+6,16); 72. } 73. //赋值验证码 74. this.str=sRand; 75. 76. //图象生效 77. g.dispose(); 78. ByteArrayInputStream input=null; 79. ByteArrayOutputStream output = new ByteArrayOutputStream(); 80. try{ 81. ImageOutputStream imageOut = ImageIO.createImageOutputStream(output); 82. ImageIO.write(image, "JPEG", imageOut); 83. imageOut.close(); 84. input = new ByteArrayInputStream(output.toByteArray()); 85. }catch(Exception e){ 86. System.out.println("验证码图片产生出现错误:"+e.toString()); 87. } 88. 89. this.image=input;/* 赋值图像 */ 90. } 91. /* 92. * 给定范围获得随机颜色 93. */ 94. private Color getRandColor(int fc,int bc){ 95. Random random = new Random(); 96. if(fc>255) fc=255; 97. if(bc>255) bc=255; 98. int r=fc+random.nextInt(bc-fc); 99. int g=fc+random.nextInt(bc-fc); 100. int b=fc+random.nextInt(bc-fc); 101. return new Color(r,g,b); 102. } 103.}
第二步:
验证码输出action
01.package com.cn.hospital.action; 02. 03.import java.io.ByteArrayInputStream; 04.import java.io.ByteArrayOutputStream; 05. 06.import org.springframework.context.annotation.Scope; 07.import org.springframework.stereotype.Controller; 08. 09.import com.cn.hospital.util.RandomCharUtil; 10.import com.cn.hospital.util.RandomNumUtil; 11.import com.opensymphony.xwork2.ActionContext; 12.import com.opensymphony.xwork2.ActionSupport; 13. 14.@Controller("utilAction") 15.@Scope("prototype") 16.public class UtilAction extends ActionSupport{ 17. 18. private static final long serialVersionUID = -7193209177116825032L; 19. private ByteArrayInputStream inputStream; 20. 21. private int width; 22. private int height; 23. private int fontSize; 24. private int codeLength; 25. private int disturbType; 26. 27. public String validNumGenerate() throws Exception{ 28. RandomNumUtil rdnu=RandomNumUtil.Instance(); 29. this.setInputStream(rdnu.getImage());//取得带有随机字符串的图片 30. ActionContext.getContext().getSession().put("random", rdnu.getString());//取得随机字符串放入HttpSession 31. return SUCCESS; 32. } 33. 34. 35. public void setInputStream(ByteArrayInputStream inputStream) { 36. this.inputStream = inputStream; 37. } 38. 39. public ByteArrayInputStream getInputStream() { 40. return inputStream; 41. } 42. 43. 44.}
第三步:
struts.xml配置
01.<!-- 产生随机验证码 --> 02. <action name="randNum" class="utilAction" method="validNumGenerate"> 03. <result name="success" type="stream"> 04. <param name="contentType">image/jpeg</param> 05. <param name="inputName">inputStream</param> 06. </result> 07. </action>
第四步:
页面访问:
01.<img src="randNum"/>
相关推荐
一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片
在JSP页面中动态生成图片验证码 <%@ page language=java pageEncoding=UTF-8%> <%@ page import=java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.* %> <%@ taglib ...
一个使用struts使用struts2.0实现的验证码功能的登录页面,可以方便的生成验证码
里面包括用户名验证和用户验证码生成两部分.注意STRUTS-CONFIG.XML
这里命名为01_image.jsp,这类的主要功能就是生成验证码,里面是各种画线条,随机数字等,我这里设置的是5个数字的验证,如果你想要改成其他的也可以,大致思路就是在生成数字的那个循环那里加上字母就可以了。...
本人用java语言编写的《随即数字验证码的生成》源码,希望能给大家带来帮助,更多的了解java的编程思想,祝初学者成功!!!
jsp获取action传来的session和session清空以及判断 jsp获取action传来的session是jsp开发中的一种常见需求,Session是Web应用...* 实现生成登录验证码 等等。Session的使用可以提高jsp应用程序的灵活性和可扩展性。
10、修复了生成验证码的访问路径 11、修复了主题操作在某些条件下会出错 12、修复了个人空间显示效果,包括文集、昵称、收藏版块、主题图标等 13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 ...
10、修复了生成验证码的访问路径 11、修复了主题操作在某些条件下会出错 12、修复了个人空间显示效果,包括文集、昵称、收藏版块、主题图标等 13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 ...
模板用servlet提供的数据动态地生成 HTML。...FreeMarker同样可以应用于非Web应用程序环境 FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的
\web\WebRoot\index.jsp 首页 =================================================================== D:\web\WebRoot\include\CSS.CSS D:\web\WebRoot\include\image.jsp 生成验证码的jsp ============...
系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...
系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...
20.5.4 生成随机验证码的imgNum类 358 20.5.5 用户登录页面index.jsp 359 20.5.6 验证用户登录信息的Servlet类login 360 20.6 显示宠物信息模块的实现 363 20.6.1 对应宠物的实体类User 363 20.6.2 定义对宠物信息...
支持上传图片和文件,文件作为附件可以下载,图片可直接在JSP页面中显示 支持回帖,并在主楼中显示 答辩用PPT 选做部分: 帖子搜索 用户查找 管理员对帖子加精、置顶 根据浏览量,自动在首页生成热门帖子列表...
struts.xml (struts主配置文件) struts-user.xml(用户模块配置文件) struts-main.xml(浏览模块配置文件) struts-order.xml(订单模块配置文件) struts-cart.xml(购物车模块配置文件) 4)WebRoot文件...
2009-03-10 17:37 462569 194709 常见的专业问题解决办法\JSP实例:动态生成验证码.mht 2009-03-10 17:52 185677 39758 常见的专业问题解决办法\jsp数字验证码代码详解 - 我爱跑IT---技术专区.mht 2009-03-10 17:22 ...
第23章 在线音乐管理系统(ajax+jsp+struts 2.x) 23.1 在线音乐管理系统简述 23.2 在线音乐管理系统前期准备 23.3 在线音乐管理系统具体实现——超级管理员操作 23.4 在线音乐管理系统具体实现——注册...
技术实现:Struts2、JSP、MySQL、Jquery、Javascript、Ajax 、Json、JUnit 项目描述: 本项目主要实现了用户管理模块、商品分类展示模块、购物车模块、订单模块。 用户管理模块实现了用户注册、实时验证、用户登录...
系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...