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, 0, size*29+3, 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版本比較低或者未啟用自動編譯,則需要手工編譯
同時,對應$COMMON_TOP/_pages/_oa__html/_gobao/目錄下也會生成一個類檔案_gbqrcode.class,若對應的檔案沒有生成,則說明jsp檔案也沒有編譯成功!
異常問題處理
JSP執行錯誤
瀏覽器地址上輸入: http://gbdev.gobao.com:8000/OA_HTML/gobao/gbqrcode.jsp?BARCODE=1234。系統提示如下:
Request URI:/OA_HTML/gobao/gbqrcode.jsp Exception: java.lang.InternalError: Can't connect to X11 window server using 'gbdev:0.0' as the value of the DISPLAY variable. |
同樣XML報表也會用於gbdev:0.0為什麼不會報錯呢?起初我意為是用root使用者上傳的Qrcode.jar和gbqrcode.jsp檔案,應用層使用者調不到Qrcode.jar中的類,修改這些檔案的所屬使用者和使用者組,還是報如上錯誤。然後,到伺服器上手工執行如下命令:
1. Root使用者下執行命令+xhost
2. 切換到應用層使用者執行: export DISPLAY=gbdev:0.0
3. 重啟Oracle EBS應用層所有服務
執行仍然提示如上錯誤。
最後,修改$APPL_TOP/admin目錄下GBDEV_gbdev.xml的環境配置檔案(注意:記得先備份該檔案喲,有問題還有回頭路可以走),如下:
執行AutoConfig使用環境配置檔案生效,再一次修改$IAS_ORACLE_HOME/Apache/Jserv/etc/目錄jserv.properties配置檔案。在末尾新增:wrapper.classpath=<QRCode.jar全路徑>。參考:Qrcode.jar包部署
中文引數值問題
開發XML報表時,給該JSP程式傳中文引數時,需要對引數值進行轉換字元編碼,主要方法如下:
1. Oracle資料庫標準包:utl_url.escape可以對字串進行URLEncode
begin
dbms_output.put_line(utl_url.escape('Oracle EBS QRCode二維條轉碼',true,'GB2312'));
dbms_output.put_line(utl_url.escape('Oracle EBS QRCode二維條轉碼',false,'GB2312'));
dbms_output.put_line(utl_url.escape('Oracle EBS QRCode二維條轉碼',true,'UTF8'));
dbms_output.put_line(utl_url.escape('Oracle EBS QRCode二維條轉碼',false,'UTF8'));
end;
1. Oracle資料庫標準包:utl_url.unescape可以對字串進行URLDecode
begin
dbms_output.put_line(utl_url.unescape('Oracle%20EBS%20QRCode%E4%BA%8C%E7%BB%B4%E6%9D%A1%E8%BD%AC%E7%A0%81','UTF8'));
end;
相關推薦
Oracle EBS JSP實現QRCode二維條碼
需求背景由於客戶或公司內部要求,在籤標貼紙上列印二維條碼。另外,自己架建Tomcat Web服務是PC機,通過JSP也是可以實現列印二維條碼,由於PC機不穩定,每隔一段時間PC機會宕機,給我們帶比較大的困擾。業務需求為了解XML報表或者Oracle Report Builde
QRCode二維條碼開發
最近在用VC6.0做QRCode二維條碼的開發,由於初學VC,中間自然走了不少的彎路,也遇到了很多的困難,所以在此我會帖出自己寫的程式,望各位高手能不吝賜教! 當然,在做的過程中也收集了好多關於QRCode編碼的資料,如果需要的話,請發郵件至:[email
QRCode二維條碼開發(程式碼)_2011.05.24
10:35:32 //函式功能:數字模式下將輸入的資料轉換成資訊碼 //引數說明: //strInput -- 原始輸入資料 //strVersionNum-- 當前版本號 //strErrLevel-- 當前糾錯等級 //返回值:strDataCode-
QRCode二維條碼開發(計算格式資訊)_2011.05.25
//函式功能:根據不同的糾錯等級,計算15位的格式資訊:BCH(15,5)//引數說明://chErrLevel -- 糾錯等級//返回值:strFormatInformation -- 資料碼字CString CQRCodeDlg
QRCode二維條碼開發(計算版本資訊)_2011.06.01
//函式功能:根據不同的版本,計算18位的版本資訊:BCH(18,6) //引數說明: //strVersionNum -- 版本號(只有版本7-40才有版本資訊,其它版本沒有版本資訊) //返回值:strVersionInformation
QRCode二維條碼開發_2011.05.23
QRCode生成器介面: 下拉列表框: 版本號:IDC_VERSIONNUM(1-40) 糾錯等級:IDC_ERRLEVEL(H、Q、H、L) 模組數:IDC_MODULNUM(1~5) 編碼模式:IDC_ENCODINGMODE(暫未加入)(3種) 按鈕: 生成:I
JavaScript實現線上Qrcode二維碼生成工具-toolfk程式設計師線上工具網
本文要推薦的[ToolFk]是一款程式設計師經常使用的線上免費測試工具箱,ToolFk 特色是專注於程式設計師日常的開發工具,不用安裝任何軟體,只要把內容貼上按一個執行按鈕,就能獲取到想要的內容結果。ToolFk還支援 BarCode
Java實現的二維碼生成和解析(QRCode方式)
1.背景 在Java實現的二維碼生成和解析(zxing方式)中採用的是谷歌裡的二維碼生成方式,在這裡將另外的一種二維碼生成方式記錄下來,以方便自己和其他需要的人。 2.二維碼 第一步:匯入相應的jar包。在http://downloa
React Native WebView元件實現的BarCode(條形碼)、(QRCode)二維碼
react-native-barCode 採用React Native WebView元件實現的BarCode(條形碼)、QRCode(二維碼),其中QRCode的程式碼是參考 qrcode,修復了qrcode圖片會出現滾動條問題。https://github.com/
C#列印二維條碼QRCode
step 1: 呼叫DotNetBarcode.dll,製作二維條碼QRCode. step 2:使用panel控制元件,顯示內容。 step 3:使用bitmap和image,把二維條碼儲存成圖片.bmp 具體請參考附件(VS2008):
java實現簡單二維迷宮(2)
blog 成員 new 構建 push port ava amp use 這次是改良版本。 將地圖封裝,老鼠封裝。是對Java基礎的一個練習吧。 這次實現也遇到了一些問題。主要是棧。封裝的mouse類中有成員變量i,j代表了老鼠的坐標。將mouse類對象m入棧的時候,總是入
java實現生成二維碼
ron isp -a 數組 技術分享 rar cep 代碼實現 lac java實現生成二維碼 二維碼vs條形碼 最大的區別就是:
PHP生成QRCode二維碼
qrcode<?php //引入 phpqrcode 類庫 //phpqrcode下載地址:https://github.com/t0k4rt/phpqrcode require_once "phpqrcode/qrlib.php"; //第一種(缺省下在網頁中生成二維碼) //調用QRCo
方案優化:網站實現掃描二維碼關註微信公眾號,自動登陸網站並獲取其信息
用戶 class his onerror 就會 openid display 要點 rac 上一篇 《網站實現掃描二維碼關註微信公眾號,自動登陸網站並獲取其信息》 中已經實現用戶掃碼登陸網站並獲取其信息 但是上一篇方案中存在一個問題,也就是文章末尾指出的可以優化的地方(可
Android用RecyclerView實現的二維Excel效果組件
eight main AS UC alt 包括 data github AD excelPanel 二維RecyclerView。不僅可以加載歷史數據,而且可以加載未來的數據。 包括在您的項目中 excelPanel 二維RecyclerView。不僅可以加載
ORACLE+Myeclipse+jsp實現簡單登錄功能
public man drivers asus style 編寫 ole 建立 rom Oracle數據庫表的建立: create table Log( un char(20), pd char(25) ) ta
某月天數問題(1.if語句實現 2.二維陣列實現)(c++)
【題目描述】 從鍵盤輸入某年某月,程式設計輸出該年的該月擁有的天數 【題目難點】 閏年定義: (1)能被4整除,卻不能被100整除 (2)能被400整除 程式碼1:(用if簡單語句來完成) #include <iostream> using na
jquery-qrcode 二維碼生成
jquery-qrcode-0.14.0.js下載 程式碼: <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <scrip
Android 實現生成二維碼
注入開源庫 implementation 'com.google.zxing:core:3.3.0' import android.graphics.Bitmap; import android.graphics.Canvas; import co
Android Zxing實現掃描二維碼條形碼功能仿微信整合閃光燈生成二維碼
最近在做android專案需要用到二維碼條形碼掃描功能,我用的是Eclipse網上原始碼大多是GitHup上的Android studio版本的所以我改了一版整合到專案中去。 效果圖: 左邊版本的掃碼框是自定義的。右邊版本的掃碼框和掃描線是圖片因為太醜所以最終換成左邊