Java学习【web基础-JSP案列-验证码】
来源:互联网 发布:开源房产cms 编辑:程序博客网 时间:2024/06/06 04:11
验证码:
为什么使用验证码? 防止机器人恶意注册。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@page import="java.io.PrintWriter"%><%@page import="java.io.OutputStream"%><%@page import="java.awt.image.BufferedImage"%><%@page import="javax.imageio.ImageIO"%><%@page import="com.sun.image.codec.jpeg.JPEGCodec"%><%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%><%@page import="java.awt.Graphics"%><%@page import="java.awt.Color"%><% // 强制让out失效! out.clearBuffer(); out = pageContext.pushBody(); // 告诉浏览器,服务器给你发的是图片,别再查码表去解码了! response.setHeader("content-type","image/jpeg"); // 创建一张在内存中的图片. BufferedImage bi = new BufferedImage(100,20,BufferedImage.TYPE_INT_RGB); // 涂鸦 // 获取画笔 Graphics g = bi.getGraphics(); // g.drawString("张三到此一游!",50,50); // g.drawRect(10,10,100,100); // g.setColor(new Color(255,255,0)); // g.fillRect(10,30,50,80); // g.drawLine(100,60,30,60); // g.drawArc(0,0,100,100,0,360); String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for(int i=1; i<=4; i++) { int idx = (int)(Math.random()*62); char c = letters.charAt(idx); g.drawString(c+"", i*17,12); } for(int i = 1; i<=4; i++) { // 干扰线 int x1 = (int)(Math.random()*101); int y1 = (int)(Math.random()*21); int x2 = (int)(Math.random()*101); int y2 = (int)(Math.random()*21); g.drawLine(x1,y1,x2,y2); } // 把图片发送给客户端 OutputStream os = response.getOutputStream(); JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os); en.encode(bi);%>
在其它jsp页面上使用验证码:
阅读全文
0 0
- Java学习【web基础-JSP案列-验证码】
- Java Web学习笔记之JSP基础
- 【Java Web 学习笔记】JSP基础语法
- Java Web学习(7):JSP基础语法
- java学习【web基础-JSP入门】
- 【Web】Jsp基础学习
- java web 学习基础(二)JSP基础语法
- web day11 JSP基础,Cookie,HttpSession,验证码
- java web学习(基础篇)二 走进JSP
- java web学习(基础篇)四 JSP MVC架构
- Java学习【web基础-JSP1-JSP中的各种元素】
- Java Web基础:客户端验证
- java web基础之jsp
- Java web之JSP基础
- java web基础之jsp
- Java Web基础(JSP)
- Java.Web学习笔记 JSP
- Java Web验证码
- Nginx反向代理和负载均衡部署
- 剑指offer 23----二叉树的前序、中序、后序、层序遍历
- 2017年7月21日博雅培优幼小衔接班毕业校长讲话总结
- 关于一个判断Integer数是否为回文数的算法问题
- 关于Hash Map的工作原理与面试题的结合讨论
- Java学习【web基础-JSP案列-验证码】
- 模拟实现string深拷贝的两个版本
- git 删除一个远程分支
- 二层交换和三层交换
- Java线程安全总结(二)
- MINA2.0 原理
- UItextField占位符在中间
- 到底什么才是闭包
- 六角幻方