ssh+birt

13 篇文章 0 订阅
5 篇文章 0 订阅
新公司工作一年多,接触最多的就是统计,当然用于统计数据展示的birt了解多了些,虽然对于底层实现认识不深,但是对于birt与ssh集成还是有些感受,尽管这种感受仅是来源于自己重构项目中birt+ssh整合demon,尽管没有实际应用到项目中,确切的说是没有完全应用到项目中。因为我不想一个人单打独斗整个统计模块,也不想把自己纠结在统计模块中,当然我也不一定做得好,但是感受吗——对于过去的总结,无需多量的抱怨的,因为那已经是过去。

由于ssh整合各种项目各种整合方法,当然谈及整合,java小生还很稚嫩,不在此卖瓜。仅总结birt如何与struts整合,统计数据,希望与大家共同学习进步。


一)应用技术与环境:

ssh:struts1.2+spring2.0+hibernate3.0

birt:birt2.3

tomcat:tomcat5.5

dababase:oracle10g

system:windowsXP


二)birt优点:

1:birt交互性强,因为birt基本就是个完整的jsp页面,所以不会存在展现上的难题

2:birt数据源支持更多,jdbc data source ,scripted data source,web service data source,

xml data source,procedure

3:与eclipse集成,开发更方便,效率更快

4:开源,扩展性更强,免费,使用成本低

三)birt缺点

1:底层入侵,数据收集与展示剥离后存在诸多问题

2:大数据量展示容易内存泄露

4:页面内部嵌入大量外部资源,修改,扩展有难度

四)birt与struts整合

a 增加代码

public Object getBean(String name ) {
if (ctx == null) {
ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
}
return ctx.getBean(name);
}


protected QueryInfo getQueryInfo(HttpServletRequest request) {
QueryInfo info = new QueryInfo();
int pageSize = getPageSize(request);
int currentPage = getCurrentPage(request);
info.setLimit(pageSize);
info.setOffset(pageSize * (currentPage - 1));
return info;
}
/**
* 获取每页显示的条数
* @param request 请求对象
* @return 每页显示的条数
*/
protected int getPageSize(HttpServletRequest request) {
int ps = 0;
String pageSize = request.getParameter(PAGE_SIZE);
if (!StringUtil.isEmpty(pageSize)) {
ps = StringUtil.string2Int(pageSize);
} else {
ps = DEFAULT_PAGE_SIZE;
}
request.setAttribute("pageSize", ps);
return ps;
}
/**
* 获取当前页数
* @param request 请求对象
* @return 当前页数
*/
protected int getCurrentPage(HttpServletRequest request) {
int cp = 0;
String currentPage = getDisplayTagParam(request, REGEX);
if (!StringUtil.isEmpty(currentPage)) {
cp = StringUtil.string2Int(currentPage);
} else {
cp = DEFAULT_CURRENT_PAGE;
}
return cp;
}


public String getDisplayTagParam(HttpServletRequest request, String regex) {
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String name = (String) en.nextElement();
if (name.matches(regex)) {
return request.getParameter(name);
}
}
return null;
}

b:修改__getContext 方法

protected IContext __getContext(HttpServletRequest request,
HttpServletResponse response)throws BirtException
{
BirtReportServiceFactory.getReportService().setContext(
getServletContext(), null);
SpInfoManager spInfoManager = (SpInfoManager)getBean("SpInfoManager");
QueryInfo info = getQueryInfo(request);
PartialCollection collection = spInfoManager.getWhiteAndBlackInfo("21006", "", info) ;
List dataList = collection.getRealDataSet() ;
request.setAttribute("result",dataList );
return new BirtContext(request, response);
}

c:web。xml修改ViewerServlet 指向的class


ViewerServletcn.com.superv.netmessage.sp.web.action.ViewerServlet




d:web.xml中增加 对于访问ViewerServlet 过滤器

validateSession/frameset*hibernateFilter/frameset*


2:增加一个action ,进行数据收集,并跳到birt页面显示容器(birt嵌入到jsp中)

if(birtName.equals("script_data_source_demon.rptdesign")){
/*****参数存入request********************/
request.setAttribute("endTime", endTime) ; //保存保存参数
}
return mapping.findForward("birtPageWindow");//转发到birt容器(嵌入birt的jsp页面)





3:birt 嵌入jsp

a:在jsp中引入

b:birt标签引入birt页面





4:birt中获取参数及数据源

a:script:open


importPackage(Packages.javax.servlet.http);
req = reportContext.getHttpServletRequest();
list = req.getAttribute("result");
spInfo = new Packages.cn.com.superv.netmessage.oam.web.model.WhiteAndBlackInfo();
resultArray = list.iterator();


b:script:fetch

if(resultArray.hasNext()==false){
return false ;
}
spInfo = resultArray.next();
row["name"]=spInfo.getSpName();
row["spid"]=spInfo.getSpId();
row["spcode"]=spInfo.getSpCode();
return true ;


c:scirpt:close

result = null ;
spInfo = null ;

5:数据展示

a:Data Set绑定显示列

[img]http://dl.iteye.com/upload/attachment/600360/3dcb4e6f-3858-378a-9a9e-b5e4c35f8acb.png" alt="" width="737" height="175[/img]




6:birt分页自定义

a:。。。。。。。。。。。

b:。。。。。。。。。。。


[size=10pt; color: #000000; font-family: 'Courier New';]
四)效果图

。。。。。。。。。。

[size=10pt; color: #000000;]

[img]http://dl.iteye.com/upload/attachment/600367/7b9cecf1-9734-3f64-ab29-56f39911e5fc.png" alt="[/img]

[/size]
[/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值