用来实现网页中的随机验证码功能,当然,只是实现了该出现功能,并没有实现判断对错功能,要做的话其实也是很简单的。
package servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * @author Chalmers * @version 创建时间:2016年3月10日 下午7:41:25 */ public class ImageServlet extends HttpServlet { private static final long serialVersionUID = 1L; // 随机出现的字符 private static final String CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; static Random random = new Random(); // 字符长度为6 private static final int NUM = 6; /** * 获得随机字符串 * * @return String */ private String getRandomString() { StringBuffer sb = new StringBuffer(); for (int i = 0; i < NUM; i++) { // 追加 sb.append(CHARS.charAt(random.nextInt(CHARS.length()))); } return sb.toString(); } /** * 返回字体颜色 * * @return Color */ private Color getFontColor() { Color c = null; // 采用rgb形式的颜色,随机生成三个小于255的整数 c = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)); return c; } /** * 获得背景颜色 * * @return Color */ private Color getBgColor(Color c) { // 采用与字体不一样的颜色 // 为了避免字体与背景颜色一样,而影响观察 return new Color(255 - c.getBlue(), 255 - c.getGreen(), 255 - c.getRed()); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 得到session对象,用来存储随机字符串的值 HttpSession session = request.getSession(true); response.setContentType("image/jpeg"); // 得到随机字符串 String randomString = getRandomString(); session.setAttribute("randomString", randomString); // 设置图片的宽和高 int width = 90; int height = 30; // 得到字体颜色 Color fontColor = getFontColor(); // 得到背景颜色 Color bgColor = getBgColor(fontColor); // 创建一个图片对象(该图片放置在内存中) BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); // 创建绘图对象,从image得到绘图对象,会把数据绘制到image上 Graphics2D g = image.createGraphics(); // 设置字体样式 g.setFont(new Font("宋体", Font.BOLD, 24)); // 设置背景颜色 g.setColor(bgColor); // 对图片进行填充 g.fillRect(0, 0, width, height); // 设置字体颜色 g.setColor(fontColor); // 在图片上绘制字符串 for (int i = 0; i < randomString.length(); i++) { g.drawString(randomString.charAt(i) + "", 8 + i * 12, 22); } // 画出干扰点 for (int i = 0, n = random.nextInt(100); i < n; i++) { // 设置点的位置以及大小 g.fillRect(random.nextInt(width), random.nextInt(height), 1, 1); } // 将图片输出到浏览器中 ServletOutputStream outStream = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outStream); encoder.encode(image); outStream.flush(); outStream.close(); } }
在网页中使用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <img src="ImageServlet" /> </body> </html>
当然,要记得在xml文件中配置servlet
<servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>servlet.ImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <url-pattern>/ImageServlet</url-pattern> </servlet-mapping>
相关推荐
登录有时所需要的验证码,四位,简单可运行。
最新的易语言——取网页验证码图片模块,下载既可以使用,方便快捷
同胞们,你们是否还为JSP开发网页过程中的验证码而头疼啊!如果是这样的话,那赶快来下载吧!呵呵!
MyEclipse实现页面验证码,是最简单的入门级页面验证码
登陆验证 带干扰线很好用 本人已经是过
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage;...import java.io.IOException;... * The doGet method of the servlet.... * This method is called ...
jsp网页中的验证码制作 只是一段很浅的代码 希望多多指教
jsp实现的带有数学表达式的验证码,给用户显示道数学算式题,当用户回答对答案后验证通过
protected void Page_Load(object sender, EventArgs e) { VryImgGen gen = new VryImgGen(); string verifyCode = gen.CreateVerifyCode(5, 1); Session["VerifyCode"] = verifyCode.ToUpper();...
jsp登陆验证,网页登陆验证带验证码校验,登录功能之添加验证码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
网页验证码
通过随机获取验证码,然后输出,在主网页上!
用Jsp和servlet写的用于动态生成验证码,点击可刷新。
java jsp实现网页上验证码产生功能,简单易懂。
34. 制作验证码图片? 35. 图片缩小放大功能 36. 点击输入框弹出日期选择? 37. 在图片上传前查看自己要上传的图片? 38. 在图片排列的页面上选中一个图片,然后把它删掉? 39. 显示某目录下的所有文件 40. 把复选框中...
验证码技术现已成为提高网站安全的一个...因此,设计了一种具有字符拥挤效果的、拥有多种变形特征的随机汉字验证码生成算法,并将其成功应用于JSP动态网页中。实验表明,产生的验证码具有更高的安全性,且易于用户使用。
JSP编写的酒店管理 所有的后台都已经做好 能实现酒店入住,预订,退房等一系列功能,登录时有验证码。。。
jsp实验--用eclipse设计教师与学生不同登陆界面,验证码随机生成;提交后分别转向教师页面和学生页面进行判断用户名和密码正确性;如果正确,3秒后,转向成功页面,否则跳回验证页面; 亲测可用。
主要介绍了 jsp登陆验证,网页登陆验证带验证码校验,登录功能之添加验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下