- 浏览: 414605 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tanmingjuntan:
这到底是上传还是下载呀。每个方法都是down开头
java多线程分块上传并支持断点续传最新修正完整版本 -
sinnk:
多谢搂主分享,我有收获!!
Spring注解@Component、@Repository、@Service、@Controller区别 -
果果啊啊:
jar包呢
spring 3.0.5 + jotm 实现的的spring mvc 的例子 -
SeaAndHill:
真实的社会
房产寓言 -
java小叶檀:
按着做效果是出来了 有一些小细节确实得研究一下代码 有一个需要 ...
扩展fancybox图片展示js插件,实现对图片的旋转
做了个Java验证码程序,结果发现在Windows上运行一切正常,在Linux下却无法显示图片,在网上搜索,开始一直以为是tomcat\bin\catalina.sh的原因,但一直都不行,单独运行生成验证码的Servlet则抛出异常:
javax.imageio.IIOException: Can't create output stream!,
经查,在将图片输入到客户端时,不能使用ImageIO.write(image, "jpeg", response.getOutputStream());而应该使用如下方式:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(image);
原因是是ImageIO.write(image, "jpeg", response.getOutputStream());
需要写缓冲文件,但是写文件不成功。
(一)生成验证码的servlet
package com.founder.chat.common; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.ServletException; 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; /** * 验证码输入校验类。 * @Project chat * @Creator y.zhang * @CreatDate 2009-4-11 */ public class GetValidateImage extends HttpServlet { private static final long serialVersionUID = -8584041841501416165L; private static int WIDTH = 60; private static int HEIGHT = 20; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); // 设置浏览器不要缓存此图片 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); // 创建内存图象并获得其图形上下文 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 产生随机的认证码并画图 char[] rands = this.generateCheckCode(); this.drawBackground(g); this.drawRands(g, rands); // 结束图像的绘制过程,完成图像 g.dispose(); // 将当前验证码存入到Session中 session.setAttribute("validateNum", new String(rands)); // 将图像输出到客户端 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); encoder.encode(image); } /** * 产生随机数。 * @return */ private char[] generateCheckCode() { // 定义验证码的字符表 String chars = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; char[] rands = new char[4]; for (int i = 0; i < 4; i++) { int rand = (int) (Math.random() * 28); rands[i] = chars.charAt(rand); } return rands; } /** * 画随机数。 * @param g * @param rands */ private void drawRands(Graphics g, char[] rands) { g.setColor(Color.BLACK); g.setFont(new Font(null, Font.PLAIN | Font.BOLD, 18)); // 在不同的高度上输出验证码的每个字符 g.drawString("" + rands[0], 1, 17); g.drawString("" + rands[1], 16, 15); g.drawString("" + rands[2], 31, 18); g.drawString("" + rands[3], 46, 16); System.out.println(rands); } /** * 画图片背景。 * @param g */ private void drawBackground(Graphics g) { g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, WIDTH, HEIGHT); // 随机产生120个干扰点 for (int i = 0; i < 120; i++) { int x = (int) (Math.random() * WIDTH); int y = (int) (Math.random() * HEIGHT); int red = (int) (Math.random() * 255); int green = (int) (Math.random() * 255); int blue = (int) (Math.random() * 255); g.setColor(new Color(red, green, blue)); g.drawOval(x, y, 1, 0); } } }
发表评论
-
java生成动态gif格式与png格式的验证码(代码5)
2013-10-25 15:01 1052import java.io.IOException; i ... -
java生成动态gif格式与png格式的验证码(代码4)
2013-10-25 14:59 729import java.util.Random; /* ... -
java生成动态gif格式与png格式的验证码(代码3)
2013-10-25 14:58 1162import java.awt.*; import jav ... -
java生成动态gif格式与png格式的验证码(代码2)
2013-10-25 14:56 3600import java.awt.AlphaComposite ... -
java生成动态gif格式与png格式的验证码(代码1)
2013-10-25 14:55 1016import java.awt.Color; import ... -
java多线程分块上传并支持断点续传最新修正完整版本
2013-10-15 17:47 27309package com.test; import ja ... -
java 分块下载
2013-10-14 19:39 2399package com.test; import ja ... -
java生成曲线图
2013-10-12 15:30 4979package com.test; import j ... -
用java生成柱状图
2013-10-11 19:16 3369package com.test; import ja ... -
关于tomcat虚拟路径配置
2012-12-31 20:42 1711最近一个学java的朋友问我tomcat的虚拟路径怎么设置,下 ... -
启动Eclipse时,启不起来JVM terminated. Exit code=-1
2012-05-11 09:48 1729出现错误了,不知道什么原因原本好好的Eclipse,今天早上出 ... -
cassandra使用之添加更新和删除
2012-03-23 16:28 4084import java.nio.ByteBuffer; ... -
cassandra初次使用之添加数据和得到数据
2012-03-22 20:11 2721添加数据 package com.guagua.test; ... -
用java生成网站的桌面快捷方式
2011-12-20 10:53 3690String templateContent = " ... -
Jutil结合springmock做项目的单元测式
2011-10-15 16:17 83751.首先下载springmock的jar包 2.把spri ... -
Java多线程编程的常见陷阱
2011-10-13 23:05 10621、在构造函数中启动线 ... -
如何以list进行排序
2011-07-27 19:56 951import java.util.*; public c ... -
图像验证码
2011-06-23 22:47 1158package test; import java ... -
md5
2011-06-23 22:47 1100package test; import java.s ... -
通过反射, 获得Class定义中声明的父类的泛型参数的类型
2010-10-22 11:14 2373/** * 通过反射, 获得Class定义中声明的父类的 ...
相关推荐
有没有发现最后生成了一串长的base64编码 把这一串编码放到img标签在前面加上"data:image/gif;base64,"是能直接使用的 ;base64,(你的base64编码)"/> ...验证码可以输入中文 前提是你的字体支持中文
Windows和Linux对字体的支持和渲染机制存在差异,这可能导致在Linux上显示的验证码文字形状、大小或清晰度与Windows上不一致。在这种情况下,提供特定的字体文件可以改善验证码的显示效果。 这里提到的四个ttf文件...
Java是一种广泛使用的跨平台编程语言,以其“一次编写,到处运行”的特性著称,因此这个抢票助手可以在多种操作系统上运行,如Windows、Mac OS或Linux。 该抢票助手主要利用了Java的Swing库来构建图形用户界面(GUI...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
2. **安装**:按照平台的指示进行安装,例如在Windows上运行安装程序,Linux环境下使用包管理器的安装命令。 3. **配置环境变量**:确保Tesseract的可执行文件路径添加到系统的PATH环境变量中,以便于在任何目录下...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
安装视窗下载最新的独立zip: 在您当前的JD2文件夹中提取“ JDownloader 2.0”内容重新启动JD2并开始下载安装Linux和Mac 克隆此存储库下载并编译将生成的darknet可执行文件复制到/JDownloader 2.0/tools/...
### 基于JAVA的安全电子商务知识点详析 #### 一、电子商务系统概述 **1.1 电子商务的内涵与分类** - **认识电子商务** - 电子商务是指利用电子信息技术手段进行的各种商务活动,包括但不限于商品买卖、服务交易...
这里的"Fetion服务端(windows\linux)"表明该服务端实现了跨操作系统平台的支持,既能在Windows系统上运行,也能在Linux系统上运行,这通常需要采用跨平台的开发工具和语言,如Java或Python。 2. **PHP短信发送...