javaWeb验证码技术
来源:互联网 发布:张孝祥javascript视频 编辑:程序博客网 时间:2024/05/18 20:52
前言:java验证码技术主要依赖于图片,下面就把随机生成的验证码嵌入到图片中,添加删除线和旋转缩放功能
用到的类:
java.awt.Graphics; java.awt.Graphics2D;java.awt.geom.AffineTransform;java.awt.image.BufferedImage;
@Test//可以旋转和放缩的验证码 public void imgDemo3() throws IOException{ int width = 60; int height = 40; BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d=(Graphics2D) img.getGraphics(); g2d.setColor(Color.white); g2d.fillRect(0, 0, width, height);//画背景 Random r=new Random(); g2d.setFont( new Font("黑体",Font.BOLD,20) ); for(int i=0;i<4;i++){ Color c=new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)); g2d.setColor(c); String str=""+r.nextInt(10); AffineTransform aff=new AffineTransform(); aff.rotate(Math.random(),i*15,20);//连接此变换与绕锚点旋转坐标的变换。旋转// aff.scale(0.6+Math.random(), 0.6+Math.random());//缩放 g2d.setTransform(aff); g2d.drawString(str, i*width/4, 20); } for(int i=0;i<4;i++){//加干扰线 Color c=new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)); g2d.setColor(c); g2d.drawLine(0, r.nextInt(height), width, r.nextInt(height)); } g2d.dispose();//释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics 对象。 ImageIO.write(img, "jpeg",new FileOutputStream("e:/a/a.jpg")); }
下面在web下实现验证码技术
如图:
功能点击看不清即可进行切换
1.建立一个servlet在post方法中写入如下代码
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //告诉客户端,输出格式 response.setContentType("image/jpeg"); int width=60,height=40; BufferedImage img=new BufferedImage(60, 40, BufferedImage.TYPE_INT_RGB); Graphics g=img.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, width, height);//画背景 g.setFont(new Font("宋体", Font.ITALIC, 20)); Random r=new Random(); for(int i=0;i<4;i++){ int a=r.nextInt(10); int y=20+r.nextInt(20); Color c=new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)); g.setColor(c); g.drawString(""+a, 5+i*width/4, y); } for(int i=0;i<4;i++){ Color c=new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)); g.setColor(c); g.drawLine(0, r.nextInt(height), width, r.nextInt(height)); } g.dispose();//释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics 对象。 ImageIO.write(img, "jpeg",response.getOutputStream()); }
2.在index.jsp下页面下的代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html> <head> <script type="text/javascript"> function changeImg(){ var img=document.getElementById("img"); var date=new Date() var t=date.getTime(); img.src="/helloWeb/servlet/ImageSevrlet?"+t;//小技巧?+t是传参 }; </script> </head> <body> <a href="a/a.jsp">导向a.jsp页面</a><br/> <a href="b/b.jsp">导向b.jsp页面</a><br/> <a href="/helloWeb/cc">导向c.jsp页面</a><br/> <img id="img" src="/helloWeb/servlet/ImageSevrlet"><a href="javascript:changeImg();">看不清</a> </body></html>
0 0
- javaWeb验证码技术
- JavaWeb验证码
- JavaWeb验证码代码
- javaweb 验证码制作
- Javaweb验证码生成
- javaWeb验证码
- javaweb生成验证码
- JavaWeb---制作验证码
- JavaWeb登陆验证码
- JavaWeb实现验证码
- JavaWeb 生成验证码
- javaweb验证码代码
- JavaWeb---制作验证码
- 【JavaWeb】画验证码图片
- JavaWeb---绘制随机验证码
- javaweb生成验证码图片
- javaweb中的验证码实现
- javaweb生成验证码图片
- git ignore file mode
- netty拆包/粘包的解决方案
- JavaScript面向对象编程
- java使用LineNumberReader读文件
- 【Qt】消息对话框类
- javaWeb验证码技术
- java 递归创建二叉树
- js刷新页面方法大全
- uva 10736 Foreign Exchange
- USACO 2.4.2 穿越栅栏
- MyEclipse快捷键大全,很实用
- 奶牛排队 (Standard IO)
- lua-string-resty的aes加密解密,无法和python的aes进行对接
- 从内存角度解析Java字符编码