Oracle EBS JSP实现QRCode二维条码
需求背景由于客户或公司内部要求,在签标贴纸上打印二维条码。另外,自己架建Tomcat Web服务是PC机,通过JSP也是可以实现打印二维条码,由于PC机不稳定,每隔一段时间PC机会宕机,给我们带比较大的困扰。
业务需求为了解XML报表或者Oracle Report Builder打印批量打印二维条码,并且JSP必须是部署在Oracle EBS应用服务层中。 前提条件?Java基础知识 ?JSP基础知识 ?Linux 常用命令如VI ?二维条码QR Code包,如下: ?Oracle EBS服务命令 JSP QR Code开发实现原理 利用JSP和Java文件流实现动态生成二维条码图片,该图片无需保存。
JSP程序代码如下代码文件: <%@ page language="java" import="java.util.*" import = "java.awt.*" import = "java.awt.Graphics2D" import = "java.awt.image.BufferedImage" import = "javax.imageio.*" import = "com.swetake.util.Qrcode" %> <% Qrcode qrcode=new Qrcode(); //获得条码字符串参数 String barCode=request.getParameter("BARCODE")==null?"No String,Please check!":request.getParameter("BARCODE"); barCode=new String(barCode.getBytes("iso-8859-1"),"utf-8"); //解决中文乱码问题 qrcode.setQrcodeErrorCorrect('S');//纠错级别(L 7%、M 15%、Q 25%、H 30%)和版本有关 qrcode.setQrcodeEncodeMode('B'); //N代表数字,A代表a-Z,B代表其它字符 。若条码字符串包含中文,则必须为B qrcode.setQrcodeVersion(3); //设置Qrcode包的版本 // int size=8; //设置下偏移量,如果不加偏移量,有时会导致出错。 int pixoff = 2; String barString = barCode; byte[] d =barString.getBytes("UTF-8"); BufferedImage bi = new BufferedImage(size*29+3,size*29+3,BufferedImage.TYPE_BYTE_GRAY); Graphics2D g = bi.createGraphics(); g.setBackground(Color.WHITE); g.clearRect(0,size*29+3); g.setColor(Color.BLACK); if (d.length>0 && d.length <43){ boolean[][] b = qrcode.calQrcode(d); for (int i=0;i<b.length;i++){ for (int j=0;j<b.length;j++){ if (b[j][i]) { g.fillRect(j*size+pixoff,i*size+pixoff,size,size); } } } } g.dispose(); bi.flush(); out.clear(); ServletOutputStream responSEOutputStream=response.getOutputStream(); ImageIO.write(bi,"png",responSEOutputStream);//生成图片文件流 responSEOutputStream.flush(); responSEOutputStream.close(); bi=null; g=null; qrcode=null; d=null; barString=null; %> 程序部署Qrcode包部署 1.将Qrcode.jar文件上传到$JAVA_TOP/gobao目录,注意:用Oracle EBS应用层用户上传。 2.修改$IAS_ORACLE_HOME/Apache/Jserv/etc/目录jserv.properties配置文件。在末尾添加:wrapper.classpath=<QRCode.jar全路径>。注意:每次执行AutoConfig以后,必须要重新配置。 JSP部署1.将gbqrcode.jsp文件上传至$OA_HTML/gobao目录下,注意:用Oracle EBS应用层用户上传 2.若Oracle EBS版本比较低或者未启用自动编译,则需要手工编译JSP文件。操作命令如:perl $JTF_TOP/admin/scripts/ojspCompile.pl --compile -s gbqrcode.jsp 同时,对应$COMMON_TOP/_pages/_oa__html/_gobao/目录下也会生成一个类文件_gbqrcode.class,若对应的文件没有生成,则说明jsp文件也没有编译成功! 异常问题处理JSP执行错误浏览器地址上输入: http://gbdev.gobao.com:8000/OA_HTML/gobao/gbqrcode.jsp?BARCODE=1234。系统提示如下: |