`
阅读更多
新公司工作一年多,接触最多的就是统计,当然用于统计数据展示的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]


  • 大小: 9.9 KB
  • 大小: 11.3 KB
分享到:
评论

相关推荐

    ssh+birt整合

    在IT行业中,SSH+BIRT整合是一项常见的技术实践,它涉及到四个关键的技术栈:Struts、Spring、Hibernate和BIRT。这些技术分别在Web应用开发的不同层面上发挥着重要作用。 首先,Struts是Java EE领域中的一款MVC...

    birt超全面学习文档

    BIRT能与SSH2无缝集成,允许开发者直接在应用中嵌入报表。文档将展示如何配置和使用这种集成,实现数据的动态获取和展示。 4. **参数的使用**:BIRT支持参数化报表,使得报表能够根据用户输入或系统变量动态调整。...

    struts hibernate spring整合birt

    通过SSH整合BIRT,开发者可以方便地在Web应用中构建复杂的报表系统,实现数据的动态查询、筛选和展示,提高企业的数据分析能力。这种整合方式充分利用了各框架的优势,降低了开发难度,同时也提升了系统的稳定性和...

    ssh2分页类

    虽然描述中提到有BIRT相关的代码,但在这个上下文中,主要关注的是SSH2的分页实现,因此可以暂时忽略这部分内容。 SSH2分页类的优点在于它降低了代码的耦合度,使得分页逻辑可以独立于业务逻辑存在,提高了代码的可...

    20101118百度面试题

    报表的原理涉及到数据的收集、组织和展示,润乾报表和BIRT报表都是流行的报表工具,前者注重性能和易用性,后者则提供了丰富的图形化设计和报表嵌入功能。报表分页通常通过设置每页显示条数和页码实现。 【其他】 ...

    JavaEE企业级架构实战演练课程.pdf

    这包括对JavaEE的核心技术如Servlet、JSP、EJB的深入理解,以及如何构建SSH(Struts、Spring、Hibernate)框架、JavaServer Faces (JSF) 和Enterprise JavaBeans (EJB)架构的表示层、业务逻辑层、持久化层和基础服务...

    原创-java岗位技能与职业规划

    - **SSH**: Spring、Struts、Hibernate框架的组合,常用于Java Web开发。 1.1.2. **工具软件** - **操作系统**: 如Windows,Linux,Unix。 - **数据库**: 包括Oracle,MySQL,SQL Server,Sybase,DB2等。 - *...

    java面试题

    常见的报表工具包括JasperReports、BIRT等。 #### Hibernate缓存级别 - 一级缓存:Session级别的缓存。 - 二级缓存:SessionFactory级别的缓存。 #### JVM工作原理 JVM主要由类加载器、运行时数据区、执行引擎等...

Global site tag (gtag.js) - Google Analytics