- 浏览: 202167 次
- 性别:
- 来自: 广州
最新评论
-
lxyoucan:
特地注册账号来感谢
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置 -
jinjiaoliu:
...
ant使用scp上传文件问题 -
AspirantHui:
非常感谢,你提供的方法解决了我的问题!
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置 -
cxh61207:
...
ant使用scp上传文件问题 -
daoyuanjiao:
如果用的是福昕PDF阅读器,该怎么弄呢?
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置
〔Picture.java〕
〔CreateImage.java〕
〔web.xml〕
〔index.jsp〕
<%@page contentType="text/html; charset=gb2312" %>
<%@page import="javabean.com.Picture"%>
<%
Picture pic = new Picture();
String random =pic.getRandom();
String encryRandom= pic.manage(random );
%>
<html>
<head>
<title>登陆窗口</title>
</head>
<body>
<div align="center">
<p align="center">附加码:<input type="attach" size="4">
<img align=absbottom vspace=2 border=0 src="servlet/CreateImage?Image=<%=encryRandom%>&Rgb=255|0|0" title="验证码图片"></p>
<input type="hidden" name="get_attach" value="<%=random%>">
</div>
</body>
</html>
package creator.common.attachLogin; import java.io.*; public class Picture{ final int key=1; final String error_format_int= "format of color is not rgb.sample \"212|232|0\""; final String error_color_input="format of color(num|num|num): num in 0-255"; /**格式化输出数据**/ public String manage(String temp){ String returnStr=""; temp = encrypt(temp); byte[] by =temp.getBytes(); for(int i=0;i<by.length;i++){ returnStr=returnStr+(byte)by[i]+"|"; } return returnStr; } /**格式化输入数据**/ public byte[] disManage(String temp){ int len=0,index=0,i=0,first=0; while(( i=temp.indexOf("|",first))>-1){ len++; first=i+1; } byte[] by=new byte[len]; first=0; while(( i=temp.indexOf("|",first))>-1){ by[index]=Byte.parseByte(temp.substring(first,i)); index++; first=i+1; } return by; } /**随机生成四位的附加码**/ public String getRandom(){ int i1 = (int)(java.lang.Math.random()*10); int i2 = (int)(java.lang.Math.random()*10); int i3 = (int)(java.lang.Math.random()*10); int i4 = (int)(java.lang.Math.random()*10); return String.valueOf(i1)+String.valueOf(i2)+String.valueOf(i3)+String.valueOf(i4); } /**加密1:错位处理**/ public String encrypt(String randomStr){ String para=random()+randomStr.substring(0,1)+random()+random()+randomStr.substring(1,2); para= para+random()+randomStr.substring(2); return jiaMi(para); } /**得到随机数0-9之间**/ private String random(){ String temp = String.valueOf((int)(java.lang.Math.random()*10)); return temp; } /**加密2:加密处理,此方法可以自己修改**/ private String jiaMi(String str){ byte[] by = str.getBytes(); ByteArrayInputStream in = new ByteArrayInputStream(by); int ch; int index=0; byte[] temp = new byte[in.available()]; while((ch=in.read())!=-1){ temp[index]=(byte)(ch-key); index++; } ByteArrayInputStream ins = new ByteArrayInputStream(temp); BufferedReader fReader = new BufferedReader(new InputStreamReader(ins)); try{ return fReader.readLine();}catch(Exception e){return "";} } /**从给的数字里得到正确的数字**/ public String discrypt(String temp){ String para = jieMi(disManage(temp)); return para.substring(1,2)+para.substring(4,5)+ para.substring(6,8); } /**解密处理**/ private String jieMi(byte[] by){ ByteArrayInputStream in = new ByteArrayInputStream(by); int ch; int index=0; byte[] temp = new byte[in.available()]; while((ch=in.read())!=-1){ temp[index]=(byte)(ch+key); index++; } ByteArrayInputStream ins = new ByteArrayInputStream(temp); BufferedReader fReader = new BufferedReader(new InputStreamReader(ins)); try{ return fReader.readLine();}catch(Exception e){return "";} } /**分解rgb格式的颜色 num|num|num**/ public int[] masterData(String temp){ int index_len=0,index=0,next_index=0; int[] return_arr=new int[3]; boolean break_error=false; if(getMax(temp,"|")==2){ while((index_len=temp.indexOf("|",next_index))>-1){ if(getInt(temp.substring(next_index,index_len))==256){ break_error = true; }else{ return_arr[index]=getInt(temp.substring(next_index,index_len)); next_index=index_len+1; index++; } if(break_error) break; } if(break_error){ return null; }else{ return_arr[index] = getInt(temp.substring(next_index)); return return_arr; } }else{ System.out.println(error_format_int+":"+temp); return null; } } private int getMax(String temp,String temp2){ int index=0,index_len=0,index_next=0; while((index=temp.indexOf(temp2,index_next))>-1){ index_len++; index_next=index+1; } return index_len; } private int getInt(String temp){ try{ return Integer.parseInt(temp); }catch(Exception e){ System.out.println(error_color_input+":"+temp); return 256; } } }
〔CreateImage.java〕
package creator.common.attachLogin; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.*; import java.awt.image.*; import java.awt.image.BufferedImage; import com.sun.image.codec.jpeg.*; import com.sun.image.codec.jpeg.JPEGCodec; public class CreateImage extends HttpServlet { static final private String CONTENT_TYPE = "text/html; charset=gb2312"; final String input_back_color_error="input rgb backcolor is error"; final String input_fore_color_error="input rgb forecolor is error"; private Picture pic = new Picture(); //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //生成图片 try{ int imageWidth = 60; int imageHeight = 20; BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); Graphics graphics = image.getGraphics(); graphics.setColor(Color.white); graphics.fillRect(0,0,imageWidth,imageHeight); graphics.setColor(Color.white); FileOutputStream fos = new FileOutputStream("attach.jpg"); BufferedOutputStream bos = new BufferedOutputStream(fos); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos); encoder.encode(image); bos.close(); }catch(Exception e){ System.out.println("生成图片出错!"); } String queryNum = request.getParameter("Image"); String queryRgb=""; if(request.getParameter("Rgb")!=null){ queryRgb = request.getParameter("Rgb"); } response.setHeader("Cache-Control","no-store"); response.setContentType("image/jpeg"); ServletOutputStream out=response.getOutputStream(); //jpg格式的背景色图片(于页面风格一样),宽3.6毫米,高1.8毫米 InputStream imageIn = new FileInputStream(new File("attach.jpg")); JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn); BufferedImage image4 = decoder.decodeAsBufferedImage(); queryNum = pic.discrypt(queryNum); Graphics g = image4.getGraphics(); if(queryRgb.length()>1){ if(pic.masterData(queryRgb)!=null){ int[] arg = pic.masterData(queryRgb); g.setColor(new Color(arg[0],arg[1],arg[2])); } }else{ g.setColor(new Color(255,0,0)); } g.drawString(queryNum,0,13); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image4); out.close(); } }
〔web.xml〕
<servlet> <servlet-name>CreateImage</servlet-name> <servlet-class>javabean.com.CreateImage</servlet-class> </servlet> <servlet-mapping> <servlet-name>CreateImage</servlet-name> <url-pattern>/servlet/CreateImage</url-pattern> </servlet-mapping>
〔index.jsp〕
<%@page contentType="text/html; charset=gb2312" %>
<%@page import="javabean.com.Picture"%>
<%
Picture pic = new Picture();
String random =pic.getRandom();
String encryRandom= pic.manage(random );
%>
<html>
<head>
<title>登陆窗口</title>
</head>
<body>
<div align="center">
<p align="center">附加码:<input type="attach" size="4">
<img align=absbottom vspace=2 border=0 src="servlet/CreateImage?Image=<%=encryRandom%>&Rgb=255|0|0" title="验证码图片"></p>
<input type="hidden" name="get_attach" value="<%=random%>">
</div>
</body>
</html>
发表评论
-
Java之RMI设计模式基本原理与示例
2013-01-23 14:45 11181. Name RMI是Romote Method Invo ... -
Java常用的通信协议效率比较(转)
2013-01-23 14:38 1593本文比较了RMI,Hessian, ... -
JQuery工具插件qTip
2011-12-14 17:38 1267好吧,原谅我偷懒:http://messense.me/jqu ... -
JAVA解压缩文件——包含嵌套的压缩文件
2011-09-15 09:19 3106今天主要介绍JAVA处理ZIP文件,JAVA提供了相应的类、方 ... -
面试题--求质数
2011-04-29 13:04 1228求100以内的质数(指在一个大于1的自然数中,除了1和此整数自 ... -
Workspace in use or cannot be created, choose a different one.--错误解决办法
2010-11-25 13:16 1641eclipse 使用一段时间后,有时会因为一些故障自己就莫名 ... -
Java定时任务Timer
2010-11-19 11:12 1408Java定时任务,用到的地方可能比较多,例如:定时对数据库的某 ... -
AOP监听的简单例子
2010-11-11 16:13 1417Spring AOP是面向切面的方式,大部分项目使用它都是在事 ... -
Tomcat 启动时加载方法
2010-11-11 15:54 1584最近遇见一个需求,需要在项目中加入一个Mina通讯的客户端,而 ... -
AOP几个重要的概念
2010-11-09 16:45 1797《Spring参考手册》中定义了以下几个AOP的重要概念: ... -
结果集转换成json字符串
2010-08-25 11:20 3178在项目中做查询时一般使用:sql或者hql,今天分别介绍一下怎 ... -
java还原科学计数法的数值
2010-08-06 15:26 2042java.text.DecimalFormat nf = ne ... -
java.lang.IllegalArgumentException: No bean specified
2010-08-04 17:04 3003java.lang.IllegalArgumentExcept ... -
argument type mismatch问题解决
2010-07-01 09:31 6570type Exception report messag ... -
实现sybase数据库字段自增
2010-04-23 13:44 1118例如:在sybase中有一张用户表t_ug_user,其中包含 ... -
Hibernate框架ORM的原理
2010-04-21 14:48 1220hibernate,通过对jdbc进行封装,对 java类和 ... -
net.sourceforge.jtds.jdbc.ClobImpl 问题
2010-02-08 14:45 2912小弟最近在做数据查询时,遇到一个这样的问题: 数据列 ... -
父子页面之间值传递问题
2009-12-31 17:26 1575第一:页面中包含iframe ... -
Oracle函数和mysql函数比较
2009-12-31 17:23 21771. Oracle中的to_number()转换成 ... -
fusioncharts生成图表flash遮挡页面中元素的情况
2009-12-31 15:57 2222在做web开发中遇到fusionc ...
相关推荐
Java获取小程序带参二维码(太阳码)调用官方接口B 实现带参二维码获取,下载复制就可使用
为了方便在Web项目中使用,你可以创建一个`ChecksumService`,提供生成和验证校验码的接口,然后在控制器或业务逻辑中调用这些服务。 ```java @Service public class ChecksumService { public String generateCRC...
综上所述,生成PDF417条码涉及多个步骤和技术,包括选择和使用合适的Java库、理解数据编码、生成条码图像,以及遵循特定行业的使用规范。通过学习和实践,开发者可以熟练掌握这一技能,将其应用于各种业务场景。
密码生成器 模组 核 核心密码生成器库。 可以单独作为库分发。 网络API 一个简单的Micronaut Java Web应用程序,它公开了核心密码生成功能。 附加功能 该项目具有一个docker-compose文件,该文件可启动以下命令: ...
1. **动软代码生成器**:动软代码生成器(Maticsoft.DbObjects.dll)是一款由动软科技开发的软件,它能够根据数据库中的表结构自动生成C#、Java、ASP.NET等不同编程语言的实体类、DAO层、Service层以及前端展示层的...
总之,CRC16是一种有效的错误检测方法,通过在数据中附加校验和来检测传输错误。在Java中实现CRC16,可以利用位操作或者现成的工具类,结合提供的`CRC16Util.java`和`CharterConverter.java`,完成数据的校验和验证...
CRC16(Cyclic Redundancy Check,循环冗余校验)...Java中的实现通过定义生成器多项式、初始化CRC寄存器、进行位移和异或操作,最终计算出CRC16校验码。CRC16.java文件中的`calculateCRC`函数就是这个过程的具体体现。
此外,MyBatis逆向生成器还可能具备一些附加功能,比如代码模板自定义、注释生成、支持多种数据库类型等。这些特性使得工具更加灵活,能够适应不同项目的需求。 总结来说,MyBatis逆向生成器是一款为MySQL数据库...
- **字节码生成器**:生成字节码。 - **JVM**:包括字节码解释器和即时编译器(JIT)。 #### 二、Java语言与平台 1. **Java语言的基本特征**: - 类似C++的语法,但去除了指针运算。 - 静态类型的面向对象系统,...
Java条形码技术是软件开发中的一个重要组成部分,特别是在零售、物流和库存管理等..."BarCodeHelp.txt"文件是学习和实践这一技术的重要参考资料,通过学习和实践,你可以创建自己的条形码生成器,满足各种业务需求。
- **Java Class文件**:Java源代码经过编译后生成的字节码文件,包含了类的定义、方法、字段等信息。这些信息是JVM执行Java程序的基础。 - **Java API**:Java API是一系列预先定义好的类和接口集合,它们构成了...
Oracle实体类生成器是一款实用的开发工具,专为程序员设计,能够自动生成C#和Java两种编程语言的实体类代码。这款工具对于处理与Oracle数据库交互的项目特别有用,可以显著提高开发效率,减少手动编写数据访问层代码...
如果勾选,就需要生成Cookie并附加到响应中。 3. **设置Cookie**: 创建Cookie对象,键为用户名和密码的哈希值,值为一个标志,如“remembered”,表示用户选择了“记住我”。设置Cookie的过期时间,如果不希望...
3. **编译器与解释器的角色**: 编译器负责将源代码转换为字节码,而解释器则执行这些字节码。在解析表达式时,编译器会检查表达式的语法是否正确,解释器则在运行时计算表达式的结果。 4. **Java的表达式类型**: -...
Java Development Kit (JDK) 是Java开发者的核心工具集,包含了编译器、文档生成器、调试器以及其他必要的工具。JDK的不同版本提供了许多新的语言特性和改进,而其帮助文档则为学习和使用Java API提供了巨大帮助。...
当Java源代码被编译后,生成的就是字节码。字节码使得Java具有跨平台性,因为JVM负责将字节码转换为特定硬件平台的机器指令。字节码也可以被反编译,用于分析代码逻辑或进行动态代码修改,如Java代理。 **类加载...
4. **Java文档生成器**(javadoc):用于从源代码中生成HTML格式的API文档,便于理解和使用Java库。 5. **Java调试器**(jdb):帮助开发人员调试Java应用程序,找出并修复代码中的错误。 6. **Java归档工具**...
4. **Java文档生成器**:javadoc,用于生成API文档,便于开发者了解类库的使用方法。 5. **Java打包工具**:jar,用于创建、管理和提取Java档案(JAR文件),便于代码的分发和部署。 6. **Java调试工具**:包括jdb、...
这些工具能够解析字节码,重构控制流和数据流,然后生成可读的Java源代码。 Java源码查看器的工作原理大致如下: 1. 读取`.class`文件:工具首先会读取`.class`文件的字节码结构,这包括类信息、方法信息、字段信息...
在Java中,注解是一种元数据,用于提供有关程序元素(如类、方法、字段等)的附加信息。注解本身并不改变程序的行为,但它们可以被工具或框架用来指导编译时或运行时的行为。 **1.2 常用注解** - **`@Override`**...