集智平台使用参数池传递参数

 

在一些普遍的需求中,报表接受的参数经常会由用户自己本身的系统中传递过来,通常会以url上拼成name=value的形式,会造成一些信息的不安全问题。

在使用集智中的参数模板查询时,我们可以发现url里传递的是一个reportParamsID的标示ID,通过参数池进行参数的传递,这样就能解决了数据安全问题,下文就介绍下如何在程序中通过集智提供的参数池来进行参数传递。

首先模拟一段设置参数池ID以及设置参数值的代码:

  String reportParamsId = com.runqian.report4.view.ParamsPool.createParamsId();//自动获取一个参数池ID
  Hashtable params = new Hashtable();//创建一个Hashtable用于存放参数name和value
  params.put(“name”, “runqian”);//模拟一个参数值为name的参数,假设他的值为runqian
  ParamsPool.put(reportParamsId, params);//将设置好的参数和ID存放到ParamsPool中.(这里可以设置多个参数)
  request.getRequestDispatcher(“jsp/test.jsp?reportParamsId=” + reportParamsId).forward(request, response);//就参数池ID拼到url中进行传递

随后在需要展现报表的jsp中解析参数池中的参数:

   //从参数缓存池中取得参数缓存的标识号
   StringBuffer param = new StringBuffer();
   String reportParamsId = request.getParameter(“reportParamsId”);
   //从参数缓存池中取得的参数保存于一个Hashtable中
   Hashtable params = null;
   if (!”".equals(reportParamsId) && reportParamsId != null) {
    params = com.runqian.report4.view.ParamsPool.get(reportParamsId);
   }
   //接下来我们以参数名为key,直接从Hashtable中取参数模板中的传递的参数值
   String paramValue = (String) params.get(“name”);
   param.append(“name=”).append(paramValue).append(“;”);
   System.out.println(“取得的参数值是:” + paramValue);

最后设置<report:html>标签中的params=<%param%>,报表中就可以正确接收参数了.而且做得了url加密的效果.

 

本文标签: