小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

報表工具軟件FineReport常見問題與解答總結(jié)

 hhulxm99 2011-07-15

本文檔集中了用戶在使用FineReport報表過程中最常見的一些問題及回答,包含了log輸出級別、session問題集錦,Session賦值并獲取,是否支持C++,.Net,自定義出錯頁面等。如果您剛剛接觸此款報表軟件,此文檔值得一看。

 

FAQ >> log輸出級別

Log輸出級別分為三種:SERVER,WARNINGINFOSERVER是導(dǎo)出服務(wù)器的報錯日志,WARNING 輸出執(zhí)行報表時的錯誤或警告信息,INFO則是導(dǎo)出所有報錯信息。設(shè)計器默認(rèn)的服務(wù)器log級別為WARNING。

1. 默認(rèn)log查看

FineReport安裝后會有自己的日志文件生成,不需要手動設(shè)置位置,也不可以改變其位置,可以直接查看相關(guān)信息。主要的兩個就是設(shè)計器logdesigner_error.log和服務(wù)器logserver_error.log,分別保存了設(shè)計器的執(zhí)行信息和服務(wù)器的執(zhí)行信息。

2. 設(shè)計器log配置

點擊菜單欄中的窗口|選項,點擊選擇log日志導(dǎo)出的位置,位置可以自己隨意確定,在后面的log級別設(shè)置的下拉框中選擇log級別,輸出不同的信息。這里輸出的信息跟上面提到的默認(rèn)輸出的設(shè)計器信息是一樣的,為了方便客戶管理,在這邊選擇生成位置。

3. 服務(wù)器log配置

打開FR管理平臺,在服務(wù)器配置>基本界面中,有服務(wù)器log級別設(shè)置下拉框,選擇不同級別輸出不同信息。

服務(wù)器日志輸出的位置就是在默認(rèn)log位置中,輸出到server_error.log中。

4. Log級別輸出分別如下

4.1 設(shè)計器默認(rèn)的服務(wù)器log級別WARNING:

輸出執(zhí)行報表時的錯誤或警告信息

警告信息(Scheduler 已經(jīng)啟動了,可以直接調(diào)用):

警告報錯:

4.2 log級別Info

輸出所有信息如登陸用戶信息、報表執(zhí)行的sql、報表執(zhí)行時間、報表執(zhí)行過程等,如下圖為訪問報表后臺輸出信息

4.3 log級別Server

Server: 只輸出服務(wù)器端的信息,報表相關(guān)的信息都不會顯示出來。

 

 

 

FAQ >> session問題集錦

一般session問題在我們報表里面主要存在于如下幾個方面:參數(shù)傳遞、權(quán)限、并發(fā)、集群。

1. FineReport中創(chuàng)建與關(guān)閉session機(jī)制

正常情況下,當(dāng)客戶端瀏覽器訪問報表服務(wù)器端的某張報表時,便會產(chǎn)生一個session會話,當(dāng)用戶關(guān)閉瀏覽器的時候就會通知報表服務(wù)器關(guān)閉這個session。若用戶的機(jī)器由于某種原因如非正常關(guān)機(jī)等等導(dǎo)致瀏覽器非正常關(guān)閉時,服務(wù)器沒有收到關(guān)閉這個session的信息,會一直保存這個不必要的session。為了解決這個問題,我們軟件中提供了這樣一種機(jī)制,瀏覽器每隔40秒向服務(wù)器發(fā)送一個“i am alive”信息,若服務(wù)器一分鐘沒有收到這個信息便會自動關(guān)閉這個session。當(dāng)瀏覽器遇到非正常停止時,便不會發(fā)送“i am alive”信息,相應(yīng)的session會在一分鐘以內(nèi)被關(guān)閉。

2. 應(yīng)用session與報表session

   可能客戶會有一個疑問就是系統(tǒng)應(yīng)用和報表應(yīng)用在一個web服務(wù)器下,那系統(tǒng)session和報表session是不是一個session,如果不是那會不會有沖突呢?答案是:不是一個session也不會起沖突,因為應(yīng)用的session存放的是request請求等一些共享信息,而報表session存放的是訪問報表的相關(guān)信息,比如訪問的是不是同一個模板等,兩者是完全獨立的東西,所以不會沖突。

3. session中傳遞參數(shù)

session 中可以保存key-value這樣的屬性對,在同一個session中,可以拿到sessionkey與其值。如果我們報表中定義了參數(shù)a, session中保存了key a ,其值為123,那么在我們報表中使用=$a就能直接在session中獲取到a的值。Session中賦值與取值如下:具體操作可以參考文檔Session賦值并獲取

HttpSession session = request.getSession();     // 獲取Session對象

session.setAttribute(String key, Object value);      // 設(shè)置Session中的屬性

session.getAttribute(String key);    // 獲取Session屬性

4. 權(quán)限

由于session中能夠保存key對,因此在權(quán)限中如果報表工程與自己的工程在一個應(yīng)用下面,即session相同,此時就能將用戶名與密碼存放于session中,在瀏覽器端將外界輸入的用戶名和密碼保存至session中,報表服務(wù)便可以獲得用戶名與密碼,去相應(yīng)的地址匹配,匹配成功,通過權(quán)限關(guān)卡;匹配失敗,跳轉(zhuǎn)登錄頁面。

5. 并發(fā)

 1可知,打開一個瀏覽器訪問一張報表就會產(chǎn)生一個session,那么如果訪問的用戶多,每個用戶都產(chǎn)生>=1session的話,可以看到 session將會很多。如果session設(shè)置的為100個,session保持時間為3分鐘,那么如果3分鐘有105session,超過的5session就進(jìn)入等待狀態(tài),若在3分鐘后服務(wù)器還沒有接受請求,這5個訪問報表的頁面就會返回session time out ,在6.5版本中已經(jīng)將session超時時間默認(rèn)設(shè)置為無窮大了。

6. 集群

集群的每臺服務(wù)器間必須創(chuàng)建通信,即session粘滯,否則也會出現(xiàn)session time out。如若有3臺服務(wù)器進(jìn)行集群,用戶發(fā)出一請求被分配至服務(wù)器A,保存了一些信息在session中,該用戶再次發(fā)送請求被分配到服務(wù)器B,要用之前保存的信息,若服務(wù)器AB之間沒有session粘滯,那么服務(wù)器B就拿不到之前的信息,就返回session time out。

7. session基本概念 

session機(jī)制本身并不復(fù)雜,然而其實現(xiàn)和配置上的靈活性卻使得具體情況復(fù)雜多變。這也要求我們不能把僅僅某一次的經(jīng)驗或者某一個瀏覽器,服務(wù)器的經(jīng)驗當(dāng)作普遍適用的經(jīng)驗,而是始終需要具體情況具體分析。

通俗的說:客戶端瀏覽器訪問某個地址,發(fā)送了一個請求,就產(chǎn)生一個session會話,現(xiàn)在的瀏覽器都可以打開多個tab窗口,打開的都屬于一個 session,當(dāng)該瀏覽器關(guān)閉的時候session就關(guān)閉了。若不關(guān)閉該瀏覽器,再次打開一個瀏覽器,會重新創(chuàng)建一個session

7.1 session在何時被創(chuàng)建

一個常見的誤解是以為session在有客戶端訪問時就被創(chuàng)建,然而事實是直到某server端程序調(diào)用HttpServletRequest.getSession(true)這樣的語句時才被創(chuàng)建,注意如果JSP沒有顯示的使用  關(guān)閉session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession session = HttpServletRequest.getSession(true),這也是JSP中隱含的session對象的來歷。

由于session會消耗內(nèi)存資源,因此,如果不打算使用session,應(yīng)該在所有的JSP中關(guān)閉它。

7.2 session何時被刪除

    綜合前面的討論,session在下列情況下被刪除a.程序調(diào)用HttpSession.invalidate();b.距離上一次收到客戶端發(fā)送的session id時間間隔超過了session的超時設(shè)置;c.服務(wù)器進(jìn)程被停止(非持久session)。

7.3 如何做到在瀏覽器關(guān)閉時刪除session

嚴(yán)格的講,做不到這一點??梢宰鲆稽c努力的辦法是在所有的客戶端頁面里使用javascript代碼window.oncolose來監(jiān)視瀏覽器的關(guān)閉動作,然后向服務(wù)器發(fā)送一個請求來刪除session。但是對于瀏覽器崩潰或者強(qiáng)行殺死進(jìn)程這些非常規(guī)手段仍然無能為力。


Session賦值并獲取

由上一章節(jié)可知,session中可以保存key-value這樣的屬性對,在同一個session中,可以拿到session中的key與其值。如果我們報表中定義了參數(shù)a,session中保存了key a,其值為123,那么在我們報表中使用=$a就能直接在session中獲取到a的值。Session中賦值與取值如下:

HttpSession session = request.getSession();    //獲取Session對象

session.setAttribute(String key, Object value);     //設(shè)置Session中的屬性

session.getAttribute(String key);   //獲取Session屬性

訪問報表時,若其參數(shù)名稱在session中有對應(yīng)的key而且在同一個應(yīng)用環(huán)境下面,那么就能自動獲取到值。以下我們以一個具體的例子說明如何將值保存在session中及報表如何獲取。

1. 實現(xiàn)步驟

1.1 模板準(zhǔn)備

新建工作薄,定義一個報表參數(shù)country

模板設(shè)計如下,在單元格中引用參數(shù)的值
 

保存模板如sessiongetpara.cpt。這邊我們僅作原理說明,故模板制作簡單一些。

1.2 Session賦值

java系統(tǒng)比如某個jsp頁面中,您可以通過session.setAttribute(String key, Object value);來設(shè)置key-value屬性對。如下面這個sessionsetpara.jsp代碼如下:

1.  <%@ page language="java" contentType="text/html; charset="gb2312" pageEncoding="gb2312"%>  

2.  <%  

3.  session.setAttribute("country","China");   

4.  %>   

5.  <html>   

6.      <body>   

7.          <p>   

8.              已經(jīng)將country參數(shù)保存進(jìn)session,值為China!   

9.          </p>   

10.     </body>   

11. </html>   

1.3 參數(shù)值的獲取

啟動服務(wù)器(內(nèi)置服務(wù)器無法解析jsp頁面,請使用其他Web服務(wù)器進(jìn)行測試),調(diào)用上述sessionsetpara.jsp頁面時,便會將country的值保存至session中,在同一個瀏覽器中新打開一個窗口(使用的為同一個session),訪問我們之前做的模板sessiongetpara.cpt

您就會發(fā)現(xiàn),模板中自動獲取到了country的值。

 

request, response session

1. request對象:

該對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。

request.getAttribute("key")可得到JSP頁面存入Value。在實際的存儲中,keyvalue是存放在一個哈希表中的,所以在這里給出StringKey會到哈希表中找出對應(yīng)他的value

而不同頁面間傳值使用request.setAttribute(key, value)時,只會從a.jspb.jsp一次請求,之后如果有第二次請求,這個request就會失去它的作用范圍,再傳就要再設(shè)置一次 request.setAttribute(key,value)或者使用requestforward()方法跳轉(zhuǎn)也可以(因為它是一次請求)。而使用session.setAttribute()會在一個過程中始終保有這個值。

2. response對象:

包含了響應(yīng)客戶請求的有關(guān)信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實例。response對象用于動態(tài)響應(yīng)客戶端請示,控制發(fā)送給用戶的信息,并將動態(tài)生成響應(yīng)。在響應(yīng)客戶端請求之前,一般可以先設(shè)置客戶端響應(yīng)的編碼格式,以防客戶端出現(xiàn)亂碼。response.setCharacterEncoding("GBK");

response既可以在本網(wǎng)站跳轉(zhuǎn),也可以跳轉(zhuǎn)到其他網(wǎng)站中;在跳轉(zhuǎn)過程中,相當(dāng)于在URL地址欄中重新輸入URL,是第二次請求,所以在requestresponse保存的數(shù)據(jù)就不存在了。

3. session對象

指的是客戶端與服務(wù)器的一次會話,從客戶連到服務(wù)器的一個WebApplication開始,直到客戶端與服務(wù)器斷開連接為止。它是HttpSession類的實例

Session:用于保存每個用戶的專用信息。Session中的信息保存在Web服務(wù)器的內(nèi)存中,保存的數(shù)據(jù)量可大可小。當(dāng)Session超時或被關(guān)閉時將自動釋放保存的數(shù)據(jù)信息。對于小量的數(shù)據(jù)Session對象保存還是一個不錯的選擇。具體的session對象刻意參考其他章節(jié):Session問題集錦和Session賦值并獲取。

FineReport是否支持C++,.Net

我們的報表軟件是純java編寫的,對于java系統(tǒng),我們能夠很好的進(jìn)行集成,那對于不是java開發(fā)的系統(tǒng),比如C++開發(fā)的,那報表能夠集成嗎?以及該如何集成呢?有如下四種情況:

1. BS端將報表嵌在頁面中,如asp頁面,此時通過直接url便可以了,就像在頁面中嵌入一個谷歌頁面一樣。

2. BS端直接跳轉(zhuǎn)至報表頁面,如頁面中有個標(biāo)簽,點擊的時候可以打開我們的報表,此時就是iis集成。

3. CS系統(tǒng)中查看報表內(nèi)容,與java一樣,C++等中也可以裝瀏覽器插件,可以直接在CS系統(tǒng)中瀏覽報表頁面。 

4. CS系統(tǒng)中嵌入我們報表的格子控件,比如用戶自己有一個CS系統(tǒng),工具欄和菜單等等都自己定義,只需要把我們設(shè)計器中格子控件集成到他們系統(tǒng)中,用來編輯內(nèi)容,這個我們不支持。

自定義出錯頁面

1. 問題描述

報表自帶的拋錯頁面色調(diào)和整個應(yīng)用的色調(diào)不一致如下圖,項目里有自己統(tǒng)一的出錯頁面,因此需要使用自定義出錯頁面。

2. 解決方案

服務(wù)器>服務(wù)器配置>出錯模板定義直接調(diào)用自定義的出錯頁面如:/error.html,頁面中可以通過模板出錯參數(shù)message、charset、exception獲取到報錯信息。

3. 實現(xiàn)步驟

3.1 自定義出錯頁面

在使用自定義出錯頁面的時候可以調(diào)用報表系統(tǒng)錯誤頁面的參數(shù),下面簡單的列出參數(shù)以及說明。

參數(shù)

說明

message

提示錯誤信息

charset

設(shè)置服務(wù)器的編碼

exception

錯誤異常堆棧信息

如上的參數(shù)可以通過${參數(shù)名}的形式調(diào)用。如在定義的error.html頁面中調(diào)用參數(shù)message將提示錯誤信息顯示在表格中,如下:

1.  <html>   

2.      <body>   

3.          <table>   

4.              <tr>   

5.                  <td>   

6.                      ${message}   

7.                  </td>   

8.              </tr>   

9.          </table>   

10.     </body>   

11. </html>  

3.2 調(diào)用自定義出錯頁面

定義好的出錯頁面在服務(wù)器>服務(wù)器配置>出錯模板定義的模板路徑中調(diào)用,可以通過相對路徑或絕對路徑進(jìn)行調(diào)用:

相對路徑:自定義的出錯頁面error.html放在當(dāng)前Web應(yīng)用下,如WebReport目錄下,通過相對路徑進(jìn)行調(diào)用,模板路徑為:/error.html

絕對路徑:自定義的出錯頁面error.html放在其他應(yīng)用下,通過絕對路徑進(jìn)行調(diào)用,模板路徑為:http://www./error.html。

注:通過絕對路徑調(diào)用時為防止瀏覽器不自動識別傳輸協(xié)議,路徑前須加上http://。
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多