- 浏览: 237380 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
qwe2252099:
给力!简单易懂
两个java web服务间SoapMessage对象的传递 -
mimang2007110:
不是自带的,自己编辑过的
java代码模板 -
墨子宇:
貌似不是带有箭头的
CSS带箭头的导航菜单 -
墨子宇:
借鉴一下。不是自带的那个吧
java代码模板 -
墨子宇:
看名字应该是注释模板吧
myeclipse编码模板
第一步:编写一个产生验证码的Servlet (验证码为全数字) package org.yeeku.web; 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.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; public class AuthImg extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpeg"); response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); HttpSession session=request.getSession(); // 在内存中创建图象 int width=60, height=20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); //生成随机类 Random random = new Random(); // 设定背景色 g.setColor(getRandColor(200,250)); g.fillRect(0, 0, width, height); //设定字体 g.setFont(new Font("Times New Roman",Font.PLAIN,18)); //画边框 //g.setColor(new Color()); //g.drawRect(0,0,width-1,height-1); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160,200)); for (int i=0;i<155;i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } // 取随机产生的认证码(4位数字) String sRand=""; for (int i=0;i<6;i++){ String rand=String.valueOf(random.nextInt(10)); sRand+=rand; // 将认证码显示到图象中 g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(rand,13*i+6,16); } // 将认证码存入SESSION session.setAttribute("rand",sRand); // 图象生效 g.dispose(); ServletOutputStream responseOutputStream =response.getOutputStream(); // 输出图象到页面 ImageIO.write(image, "JPEG", responseOutputStream); //以下关闭输入流! responseOutputStream.flush(); responseOutputStream.close(); } Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); 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); } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } // </editor-fold> } //产生的验证码有字母的Servlet public class AuthImg extends HttpServlet { private Font mFont = new Font("Arial Black", Font.PLAIN, 16); public void init() throws ServletException { super.init(); } Color getRandColor(int fc,int bc) { Random random = new Random(); 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); } public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); int width=100, height=18; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); Random random = new Random(); 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(mFont); 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 sRand=""; for (int i=0;i<6;i++) { String tmp = getRandomChar(); sRand += tmp; g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); g.drawString(tmp,15*i+10,15); } HttpSession session = request.getSession(true); session.setAttribute("rand",sRand); g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream()); } private String getRandomChar() { int rand = (int)Math.round(Math.random() * 2); long itmp = 0; char ctmp = '\u0000'; switch (rand) { case 1: itmp = Math.round(Math.random() * 25 + 65); ctmp = (char)itmp; return String.valueOf(ctmp); case 2: itmp = Math.round(Math.random() * 25 + 97); ctmp = (char)itmp; return String.valueOf(ctmp); default : itmp = Math.round(Math.random() * 9); return String.valueOf(itmp); } } 第二步,在工程中的web.xml中配置上面的servlet <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>img</servlet-name> <servlet-class>org.yeeku.web.AuthImg</servlet-class> </servlet> <servlet-mapping> <servlet-name>img</servlet-name> <url-pattern>/authImg</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 第三步,编写验证码显示的jsp页面: <%@ page contentType="text/html;charset=gb2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>认证码输入页面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="0"> <script language="JavaScript"> function myrefresh() { window.location.reload(); } </script> </head> <body> <form method=post action="check.jsp"> <table> <tr> <td align=left> 系统产生的认证码: </td> <td> <img border=0 src="authImg"> <input type="button" value="看不清,在换一张" onclick="myrefresh()"> </td> </tr> <tr> <td align=left> 输入上面的认证码: </td> <td> <input type=text name=rand maxlength=4 value=""> </td> </tr> <tr> <td colspan=2 align=center> <input type=submit value="提交检测"> </td> </tr> </table> </form> </body> 第四步,编写jsp测试验证码 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <html> <head> <title>认证码验证页面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="0"> </head> <body> <% String rand = (String)session.getAttribute("rand"); String input = request.getParameter("rand"); %> 系统产生的认证码为: <%= rand %><br> 您输入的认证码为: <%= input %><br> <br> <% if (rand.equals(input)) { %> <font color=green>输入相同,认证成功!</font> <% } else { %> <font color=red>输入不同,认证失败!</font> <% } %> </body> </html>
发表评论
-
HttpClient各种使用方法
2014-08-27 15:25 1446最近项目中用到了模拟HTTP请求的部分,下面做了一个小整合 ... -
java中BCD编码
2014-08-09 11:20 3462Java中实现的BCD编码,供有兴趣的参考,欢迎批评指正 ... -
Android数据库操作的两种方式
2014-07-10 16:56 1004Android操作数据库分文两种方式,一种是自己写sql脚本 ... -
Apache Ftp Server与spring框架融合
2014-04-01 16:33 6644最近在写一个项目,需要用到FTP服务,就从网上搜了一下,发现 ... -
Apache Ftp Server使用说明
2014-04-01 15:45 677最近公司项目需要一个FTP服务器,就从网上搜了一下发现Apac ... -
编程从业 5 年后的 14 条经验
2013-04-20 14:57 8251. 当性能遇到问题时,如果能在应用层进行计算和处理,那就把 ... -
Spring自己的轻量级定时器的两种实现方式
2013-03-04 19:35 1200Spring自己本身的轻量级 ... -
Java获取当前路径
2013-03-04 12:17 8401、利用System.getProperty()函数获取当 ... -
java udp通信
2012-12-12 11:39 1200java服务器部分: public static vo ... -
java 实现ftp的文件上传和删除
2012-12-01 11:49 17435package com.tw.ftp; impor ... -
java操作FTP,实现文件上传下载删除操作
2012-12-01 11:07 16991上传文件到FTP服务器: ... -
java下载文件的四种方式
2012-11-30 15:30 998try { ... -
模拟HTTPClient发送消息到服务器
2012-07-16 14:36 1018// 存储服务器的响应消息 Stri ... -
两个java web服务间SoapMessage对象的传递
2012-07-14 15:51 1976客户端代码: try { ... -
字符串转换成SoapMessage对象
2012-07-14 15:40 4321下面的代码可以把字符串转换成SoapMessage对象 ... -
SoapMessage对象转换成字符串
2012-07-14 15:36 6402下面的代码可以把一个SoapMessage对象转换成字符串对象 ... -
手动修改和启动在spring配置文件中配置的定时器
2012-07-12 20:50 21241、创建业务处理类 public class Task ... -
手动利用spring提供的quartz创建定时器
2012-07-12 20:41 3019手动创建并启动定时器方法: /** * & ... -
spring定时器的创建和配置
2012-07-12 20:38 68621、创建业务处理类 public class Palp ... -
spring管理日志的例子
2012-05-07 15:32 813Spring 带给我们的另一个好处就是让我们可以“专心做 ...
相关推荐
java实现滑动验证码
JAVA实现随机图片验证码简单方法.rtf
1.部署步骤 1.1 100%可生产使用. 1.2 导入到idea时候选择maven项目 1.3 修改demo里面子项目resources/application.yml的redis... 4.2拖动图片验证码:https://blog.csdn.net/m0_38138879/article/details/117559456
Java作为广泛应用的编程语言,也提供了多种方法来实现验证码识别。在这个“java-验证码识别-验证码破解”的主题中,我们将深入探讨如何使用Java进行验证码识别,特别是通过Tess4J库进行OCR(光学字符识别)。 ...
在本文中,我们将深入探讨如何使用Java语言来实现一个图片验证码的系统。Java因其丰富的库和强大的面向对象特性,成为开发验证码的理想选择。 验证码的核心功能包括生成随机字符串、将字符串转化为图像以及提供用户...
2. **Java图片验证码实现**: 在Java中,我们可以使用`java.awt`和`javax.imageio`库来创建和处理图片。首先,创建一个新的空白图片,然后在图片上绘制随机颜色和形状的干扰线,最后在合适的位置上绘制随机生成的...
包含5个识别图片验证码的类,分别对应不同5种不同的验证码 其中用了两种不同的实现方式(截取采样像素比对+Tesseract-OCR识别) 附带一个图像指纹类(判定图片相似度)和一个寻找联通线的类(八皇后算法实现)
这个"java-图片验证码.zip"压缩包包含了一个实现Java图片验证码功能的工具类(VerifyUtil.java)和一个具体的控制器(AppPicCodeController.java),用于处理验证码的生成与验证。 首先,我们来详细了解一下`...
描述中同样强调了"java生成图片验证码",这意味着我们将专注于Java实现的具体步骤和技术。 标签"java servlet"表明我们将在Servlet环境下进行操作。Servlet是Java EE(现在称为Jakarta EE)的一部分,主要用于开发...
验证码(Vercode)是网络应用中常用的一种...总的来说,创建Java图片验证码涉及多个技术点,包括字符串生成、图像处理、随机数生成等。通过理解并实践这些技术,开发者可以创建出适合自己应用的高效安全的验证码系统。
### Java 图片验证码实现原理与代码解析 #### 一、概述 在许多网站或应用程序中,为了防止机器人的恶意操作,经常会使用到图形验证码。Java 图片验证码是一种常见的实现方式,它通过生成具有一定随机性的图像,并...
实现功能:传入路径,返回base64图片编码(原图抠图及滑块图)、图片坐标值、唯一id; 使用方法:1、将jar包导入项目中; 2、调用工具类 ImageVo imageVo = GraphicCodeUtil.generate("E:\\data\\3322.jpg",width,...
在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。
springboot框架实现滑动验证码,下载后可直接运行,http://localhost:8899/index.html启动后直接访问验证,工具方法可以直接拿出使用与自身项目代码结合使用,本人前端能力有限,只实现基本的滑动验证,关于其他效果...
本篇文章将详细讨论验证码的基本原理,以及如何使用Java实现简单的验证码破解方法。请注意,了解验证码破解知识主要是为了提高网站安全意识,避免自身系统被攻击,而不是用于恶意破解他人系统。 验证码的类型主要有...
在JAVA平台上,我们可以利用OCR(Optical Character Recognition,光学字符识别)技术来实现对各种复杂验证码的识别,包括变形、扭曲、斜线干扰以及含有噪点的验证码。本项目的核心就是通过JAVA实现一个强大的OCR...
Java图片滑动验证码是一种常见的网页安全机制,用于防止自动化脚本或机器人进行恶意操作,如批量注册、频繁登录等。这种验证码通常由两张图片拼接而成,用户需要通过拖动滑块将一部分图片正确地拼接到另一部分上,...
在学习这些验证码实现时,你可以通过查看压缩包中的"validateCode"源码文件来深入了解每个验证码的具体实现细节。同时,"截图"可能包含各个验证码的示例图像,帮助理解其外观和工作原理。此外,"关注科帮网获取更多...
在Java开发中,生成动态GIF验证码是一种常见的安全机制,用于防止自动机器人...通过以上步骤,你就可以在Java Web应用中实现一个生成动态GIF验证码的功能。这不仅增强了系统的安全性,也为用户提供了良好的交互体验。