功能调用说明
调用方法
安全调用模块提供了一种实现了安全机制的产品功能前台调用方法,使用步骤如下。
Step1、引入提供前台调用方法的js:
mis2/customer/js/GezEntry.js;
Step2、后台生成调用时传入参数的安全校验信息:
<%@ page import="com.customer.security.SecInfoUtils "%>
<%
// 参数
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("param1", "value1");
String secInfo = SecInfoUtils.generate(request, paramMap);
%>
Step3、通过js中提供的前台方法调用产品功能:
new GezEntry(parttenID, params, secInfo, target).enter();
方法参数说明:
- patternID 所需调用功能的模式ID,在产品中的配置文件【pattern.xml】有相应配置
- params 参数串,格式为param1=value1&...¶mN=valueN,或者JSON对象格式
- secInfo 安全校验信息,后台生成
- target 打开目标(新窗口、当前窗口、指定窗口等)
注意:上述方法在前台调用时使用了后台生成的安全校验信息,调用时参与校验的参数值要与实际传递的参数值要一致,即前后台传递的参数是一致的。这样如果用户修改了后台参与校验的参数就不能通过安全校验。此方法有效规避了前台调用的安全隐患。此外,并不是所有参数都需要加入到安全校验,需要看各个功能调用入口的具体情况。如果没有从后台传递的参数,在调用Security.generate(request, paramMap);接口时,可以使用不包含值的paramMap参数,或将paramMap设置为null值。
功能调用示例页面
产品提供了调用示例页面,供用户参考上述前台调用方法的典型应用场景与实现代码,如下图所示:
示例页面查看地址:http://localhost:8800/reportmis/mis2/showDemo/callDemo_geezn.jsp
如果产品系统不是部署在本机,则请将上面地址中的localhost更改为产品系统实际部署地址。
下面详细说明示例页面中各例子的具体功能与实现代码:
单点登录方式
提供了两种典型的单点登录方式。可以在示例中输入登录的用户名、密码,然后点击某种登录方式完成单点登录验证。
具体各方式的特点与应用方法,分别参见:单点登录-方式1、单点登录-方式2。
展现一张报表
该示例展示产品报表展现功能模块的调用。
点击示例标题,可调用报表展现功能打开一张指定的报表。
示例代码:
function showReport(){
// 访问报表所需参数,resID:资源ID(通过resID指定要展现的报表资源),username:用户名(通过username传入查看报表的用户ID)
var params = {resID : "10046", username : "root"};
<%
Map<String, String> paramMap_sr = new HashMap<String, String>();
// 生成安全校验信息
paramMap_sr.put("resID","10046");
paramMap_sr.put("username","root");
String secInfo_sr = SecInfoUtils.generate(request, paramMap_sr);
%>
// 调用报表展现功能,调用时各参数含义依次为:模块ID、所需参数、安全校验信息、展示位置,其中SR是报表展现模块的模式ID
// 展示位置:_blank--新页面打开、_self--本页面打开、iframeName--在指定的iframe中打开
new GezEntry("SR", params, "<%=secInfo_sr%>", "_blank").enter();
}
打开数据资源管理器
该示例展示产品资源管理器的调用。
点击示例标题,可调用产品的资源管理器,并且调用时传入了数据管理的根目录资源ID,可以打开资源管理器并显示数据资源管理根目录,对数据资源进行管理。如下图:
示例代码:
//打开数据资源管理器
function openResManager(){
// 设置调用时所需参数,resID:资源ID(通过resID指定调用资源管理器时所打开的根目录)
// 这里30829是产品中数据管理默认的根目录ID
var params = {resID : "30829"};
//生成安全校验信息
<%
Map<String, String> paramMap__resList = new HashMap<String, String>();
paramMap__resList.put("resID","30829");
String secInfo_resList = SecInfoUtils.generate(request, paramMap__resList);
%>
//通过前台调用方法调用产品的资源管理器,其中ResList是资源管理器模块的模式ID
new GezEntry("ResList", params, "<%=secInfo_resList%>", "_blank").enter();
}
如何获取平台资源及目录ID,请参考:获取资源/目录ID
打开任务列表
该示例展示产品调度任务管理功能的调用。
点击示例标题,可打开产品的调度任务管理页面,进行调度任务的查询、新建、修改、删除等管理维护。如下图:
示例代码:
// 打开调度任务管理列表
function showScheduleTaskList(){
//调用时如果无需传入参数,则params可以为空
//例如这里调用调度任务管理列表,无需传参
var params={};
<%
Map<String, String> paramMap_schedule = new HashMap<String, String>();
String secInfo_schedule = SecInfoUtils.generate(request, paramMap_schedule);
%>
//调用调度管理任务列表,其中ScheduleTaskList是调度任务管理模块的模式ID
new GezEntry("ScheduleTaskList", params, "<%=secInfo_schedule %>", "_blank").enter();
}
获取用户可用的DBD的resID
该示例展示如何获取用户有权查看的管理看板资源ID,以及管理看板展现功能的调用。
点击示例标题“5、获取用户可用的DBD的resID”,将返回指定用户的可用看板ID,多个看板ID以逗号分隔,如下图:
示例代码:
// 获得指定用户可用的DBD面板的resID
function getUserOwnDBD(){
// 发送Ajax请求获取可用DBD的resID
// 这里用的是经过封装的Ajax,用户可根据自己的需要选择访问方式
var ajax = new AjaxUtil();
// 设置参数,通过username指定用户ID
var params={username:"root"};
// 发情请求,参数说明:请求url、所需参数、成功时调用的方法、失败访问方法
ajax.sendAjax("http://localhost:8800/reportmis/mis2/showDemo/getDBDresID.jsp",params,success,error);
}
上面请求中getDBDresID.jsp中的代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="com.runqianapp.eds.dashboard.manage.DBDUtil"%>
<%@ page import="com.geezn.exception.GeeznException" %>
<%
//获取用户ID
String userName = request.getParameter("username");
PrintWriter pw = response.getWriter();
//获取指定用户的可用看板资源ID
try {
DBDUtil dbd = new DBDUtil();
List<String> list = new ArrayList<String>();
list = dbd.alldbdByUser(userName);
pw.print(list.toString());
} catch (GeeznException e) {
e.printStackTrace();
}
%>
点击示例标题“展现管理看板”,将调用管理看板展现功能,在下方的iframe中展现指定的看板,如下图:
示例代码:
// 打开dbd面板
function ShowDBDPanel(){
//设置调用时需传入的参数,resID:资源ID(通过resID指定需要展现的看板资源ID)
//例如这里表示展现ID为31857的看板
var params={resID:'31857'};
//生成安全校验信息
<%
Map<String, String> paramMap_dbd = new HashMap<String, String>();
paramMap_dbd.put("resID","31857");
String secInfo_dbd = SecInfoUtils.generate(request, paramMap_dbd);
%>
//调用看板展现功能,其中ShowDBDPanel是管理看板展现模块的模式ID
new GezEntry("ShowDBDPanel", params, "<%=secInfo_dbd%>", "showDBDIframe").enter();
}
进入数据管理系统菜单
该示例展示产品菜单页面的调用。
点击示例标题,可在新窗口中打开产品系统菜单页面。如下图:
示例代码: