FineReport中自定義登錄界面的方法
FineReport報(bào)表軟件是一款純Java編寫(xiě)的、集數(shù)據(jù)展示(報(bào)表)和數(shù)據(jù)錄入(表單)功能于一身的企業(yè)級(jí)web報(bào)表工具,它“專業(yè)、簡(jiǎn)捷、靈活”的特點(diǎn)和無(wú)碼理念,僅需簡(jiǎn)單的拖拽操作便可以設(shè)計(jì)復(fù)雜的中國(guó)式報(bào)表,搭建數(shù)據(jù)決策分析系統(tǒng)。
在登錄平臺(tái)時(shí),不希望使用FR默認(rèn)的內(nèi)置登錄界面,想通過(guò)自定義登錄界面實(shí)現(xiàn)登錄操作,內(nèi)置登錄界面如下圖:
登錄界面,獲取到用戶名和密碼的值,發(fā)送到報(bào)表系統(tǒng),報(bào)表服務(wù)帶著這兩個(gè)參數(shù)訪問(wèn)認(rèn)證地址進(jìn)行認(rèn)證。
自定義登錄界面
1)登錄界面設(shè)置
自定義html登錄頁(yè)面:命名為login.html,并保存在%FR_HOME%\WebReport下,代碼如下:
<span style="font-family:Microsoft YaHei;font-size:14px;"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="ReportServer?op=emb&resource=finereport.js"></script>
<script type="text/javascript">
function doSubmit() {
var username = FR.cjkEncode(document.getElementById("username").value); //獲取輸入的用戶名
var password = FR.cjkEncode(document.getElementById("password").value); //獲取輸入的參數(shù)
jQuery.ajax({
url:"http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso",//單點(diǎn)登錄的管理平臺(tái)報(bào)表服務(wù)器
dataType:"jsonp",//跨域采用jsonp方式
data:{"fr_username":username,"fr_password":password},//獲取用戶名密碼
jsonp:"callback",
timeout:5000,//超時(shí)時(shí)間(單位:毫秒)
success:function(data) {
if (data.status === "success") {
window.location=data.url;//認(rèn)證成功跳轉(zhuǎn)頁(yè)面,因?yàn)閍jax不支持重定向所有需要跳轉(zhuǎn)的設(shè)置
//登錄成功
} else if (data.status === "fail"){
alert("用戶名或密碼錯(cuò)誤");//登錄失?。ㄓ脩裘蛎艽a錯(cuò)誤)
}
},
error:function(){
alert("超時(shí)或服務(wù)器其他錯(cuò)誤");// 登錄失?。ǔ瑫r(shí)或服務(wù)器其他錯(cuò)誤)
}
});
}
</script>
</head>
<body>
<p>請(qǐng)登錄</p>
<form name="login" method="POST">
<p>
用戶名:
<input id="username" type="text" />
</p>
<p>
密 碼:
<input id="password" type="password" />
</p>
<input type="button" value="登錄" onclick="doSubmit()"/>
</form>
</body>
</html></span>
Dosubmit()是主要的邏輯判斷,實(shí)現(xiàn)的是將對(duì)應(yīng)的值傳給報(bào)表服務(wù)的邏輯實(shí)現(xiàn)過(guò)程。
調(diào)用登錄界面
登錄系統(tǒng),選擇管理系統(tǒng)>外觀配置,在登錄頁(yè)選項(xiàng)中選擇設(shè)置登錄網(wǎng)頁(yè),并輸入自定義登錄頁(yè)面的路徑:login.html,如下圖所示:
總結(jié)
比如說(shuō)若用戶有自己的系統(tǒng),將FR繼承到自己已有系統(tǒng)中,該系統(tǒng)有自己的登錄界面,希望登錄自己系統(tǒng)的同時(shí)也登錄報(bào)表(即將輸入的用戶名密碼也發(fā)送到報(bào)表服務(wù)進(jìn)行認(rèn)證),從而訪問(wèn)報(bào)表時(shí)不需要再次登錄即單點(diǎn)登錄,步驟如下:
1、找到您系統(tǒng)登錄頁(yè)面如login.jsp;
2、在login.jsp頁(yè)面head中引入finereport.js;
3、在login.jsp頁(yè)面JavaScript中定義function如dosubmit,在dosubmit中獲取到輸入的用戶名密碼,并通過(guò)iframe方式或者ajax方式進(jìn)行認(rèn)證。
4、在FineReport平臺(tái)系統(tǒng)中設(shè)置自定義登錄頁(yè)面地址為您系統(tǒng)的登錄地址。
若是OA系統(tǒng)或者報(bào)表系統(tǒng)和項(xiàng)目系統(tǒng)不再同一個(gè)服務(wù)器上,可以進(jìn)行ajax跨域異步單點(diǎn)登錄。
Session傳值
對(duì)于Java系統(tǒng)來(lái)說(shuō),可將用戶名與密碼放在session中,把報(bào)表集成在同一環(huán)境下面,報(bào)表可自動(dòng)獲取到用戶名和密碼的值進(jìn)行驗(yàn)證。
還原默認(rèn)登錄界面
如果在決策系統(tǒng)修改了登錄界面后,希望還原成系統(tǒng)默認(rèn)登錄界面,應(yīng)該如何實(shí)現(xiàn)呢?
1)打開(kāi)安裝目錄%FR_HOME%\WebReport\WEB-INF\resources,找到fsconfig.xml
2)刪除loginUrl屬性
右擊fsconfig.xml文件,選擇編輯器打開(kāi),刪除文件中的loginUrl屬性,如下,刪除login.htm:

此時(shí)請(qǐng)務(wù)必關(guān)閉設(shè)計(jì)器,重新開(kāi)啟,再次進(jìn)入數(shù)據(jù)決策系統(tǒng),即可回到默認(rèn)的登錄界面。
還原到默認(rèn)的登錄界面后,如果再需要設(shè)置登錄界面,可以用管理員賬戶登錄,進(jìn)行設(shè)置即可。
以上所述是小編給大家介紹的FineReport中自定義登錄界面的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java開(kāi)發(fā)實(shí)現(xiàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
java進(jìn)制轉(zhuǎn)換工具類實(shí)現(xiàn)減少參數(shù)長(zhǎng)度
這篇文章主要為大家介紹了java進(jìn)制轉(zhuǎn)換工具類實(shí)現(xiàn)減少參數(shù)長(zhǎng)度示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Spring中任務(wù)調(diào)度之解讀@Scheduled和@Schedules注解的使用
這篇文章主要介紹了Spring中任務(wù)調(diào)度之解讀@Scheduled和@Schedules注解的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
關(guān)于replaceFirst使用時(shí)的注意事項(xiàng)
這篇文章主要介紹了關(guān)于replaceFirst使用時(shí)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java實(shí)現(xiàn)NIO聊天室的示例代碼(群聊+私聊)
這篇文章主要介紹了Java實(shí)現(xiàn)NIO聊天室的示例代碼(群聊+私聊),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Java創(chuàng)建對(duì)象的六種常用方式總結(jié)
作為Java開(kāi)發(fā)者,經(jīng)常創(chuàng)建很多對(duì)象,你是否知道Java中創(chuàng)建對(duì)象有哪些方式呢?下面這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建對(duì)象的六種常用方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
Java實(shí)現(xiàn)LeetCode(1.兩數(shù)之和)
這篇文章主要介紹了Java實(shí)現(xiàn)LeetCode(兩數(shù)之和),本文使用java采用多種發(fā)放實(shí)現(xiàn)了LeetCode的兩數(shù)之和題目,需要的朋友可以參考下2021-06-06
IDEA中HTML通過(guò)servlet3.0注解名提交表單到servlet類找不到頁(yè)面的問(wèn)題
這篇文章主要介紹了IDEA中HTML通過(guò)servlet3.0注解名提交表單到servlet類找不到頁(yè)面的問(wèn)題,本文通過(guò)場(chǎng)景描述及問(wèn)題解析,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
RocketMQ之Consumer整體介紹啟動(dòng)源碼分析
這篇文章主要為大家介紹了RocketMQ源碼分析之Consumer整體介紹啟動(dòng)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

