日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

報(bào)表工具軟件FineReport常見(jiàn)問(wèn)題與解答總結(jié)

 hhulxm99 2011-07-15

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

 

FAQ >> log輸出級(jí)別

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

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

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

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

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

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

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

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

4. Log級(jí)別輸出分別如下

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

輸出執(zhí)行報(bào)表時(shí)的錯(cuò)誤或警告信息

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

警告報(bào)錯(cuò):

4.2 log級(jí)別Info

輸出所有信息如登陸用戶(hù)信息、報(bào)表執(zhí)行的sql、報(bào)表執(zhí)行時(shí)間、報(bào)表執(zhí)行過(guò)程等,如下圖為訪問(wèn)報(bào)表后臺(tái)輸出信息

4.3 log級(jí)別Server

Server: 只輸出服務(wù)器端的信息,報(bào)表相關(guān)的信息都不會(huì)顯示出來(lái)。

 

 

 

FAQ >> session問(wèn)題集錦

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

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

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

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

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

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

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

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

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

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

4. 權(quán)限

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

5. 并發(fā)

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

6. 集群

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

7. session基本概念 

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

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

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

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

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

7.2 session何時(shí)被刪除

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

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

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


Session賦值并獲取

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

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

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

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

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

1. 實(shí)現(xiàn)步驟

1.1 模板準(zhǔn)備

新建工作薄,定義一個(gè)報(bào)表參數(shù)country

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

保存模板如sessiongetpara.cpt。這邊我們僅作原理說(shuō)明,故模板制作簡(jiǎn)單一些。

1.2 Session賦值

java系統(tǒng)比如某個(gè)jsp頁(yè)面中,您可以通過(guò)session.setAttribute(String key, Object value);來(lái)設(shè)置key-value屬性對(duì)。如下面這個(gè)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ù)值的獲取

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

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

 

request, response session

1. request對(duì)象:

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

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

而不同頁(yè)面間傳值使用request.setAttribute(key, value)時(shí),只會(huì)從a.jspb.jsp一次請(qǐng)求,之后如果有第二次請(qǐng)求,這個(gè)request就會(huì)失去它的作用范圍,再傳就要再設(shè)置一次 request.setAttribute(keyvalue)或者使用requestforward()方法跳轉(zhuǎn)也可以(因?yàn)樗且淮握?qǐng)求)。而使用session.setAttribute()會(huì)在一個(gè)過(guò)程中始終保有這個(gè)值。

2. response對(duì)象:

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

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

3. session對(duì)象

指的是客戶(hù)端與服務(wù)器的一次會(huì)話(huà),從客戶(hù)連到服務(wù)器的一個(gè)WebApplication開(kāi)始,直到客戶(hù)端與服務(wù)器斷開(kāi)連接為止。它是HttpSession類(lèi)的實(shí)例

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

FineReport是否支持C++,.Net

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

1. BS端將報(bào)表嵌在頁(yè)面中,如asp頁(yè)面,此時(shí)通過(guò)直接url便可以了,就像在頁(yè)面中嵌入一個(gè)谷歌頁(yè)面一樣。

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

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

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

自定義出錯(cuò)頁(yè)面

1. 問(wèn)題描述

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

2. 解決方案

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

3. 實(shí)現(xiàn)步驟

3.1 自定義出錯(cuò)頁(yè)面

在使用自定義出錯(cuò)頁(yè)面的時(shí)候可以調(diào)用報(bào)表系統(tǒng)錯(cuò)誤頁(yè)面的參數(shù),下面簡(jiǎn)單的列出參數(shù)以及說(shuō)明。

參數(shù)

說(shuō)明

message

提示錯(cuò)誤信息

charset

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

exception

錯(cuò)誤異常堆棧信息

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

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)用自定義出錯(cuò)頁(yè)面

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

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

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多