与Java系统集成

1.单独部署集成

非跨域部署
与Java Web项目部署在同一个Web服务下(如:tomcat),两个系统IP与端口相同,项目名称不同,采用iframe访问系统页面,可以通过GET或是POST方式访问系统,
GET : 浏览器对于GET请求访问参数是拼接在URL中,浏览器会限制URL的长度,这种方式只能传递有限的参数
POST: 以POST请问方式访问报表页面或是表单页面,可以传递大量参数

部署方法
将AnyReport安装目录tomcat webapps 下的dmp项目 copy 到要集成的 java web服务下,如testi java web系统,dmp 复制到与 testi同目录中

iframe集成post请求
html页面通过form表单post方式请求报表页面,表单target 为iframe

  1. <body>
  2. <form action="http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt" method="post" target="rptframe" id="rptForm">
  3. </form>
  4. <iframe id="rptframe" name="rptframe" width="100%" height="100%"></iframe>
  5. <script type="text/javascript">
  6. $(function(){
  7. $("#rptForm").submit();
  8. })
  9. </script>
  10. </body>

跨域部署
使用AnyReport默认安装应用,默认端口为9905,系统可以通过iframe集成以GET方式访问报表或表单页面,请见:iframe集成方式

2.引入jar深度集成

AnyReport报表软件是一款纯Java开发的web报表工具,可以降AnyReport jar文件与jsp页面文件引入到Java web系统,Java web应用可以直接调用AnyReport API接口,提供程序数据集,报表数据来源可由Java程序获取

集成
AnyReport安装成功后,在tomcat webapps目录存在一个dmp项目

将dmp下的anyrt 文件copy到 ecplise Java web项目,如testi项目,
将dmp/WEB-INF目录下的lib目录中jar包 copy 到testi web项目的lib目录下,如果项目中已经存在jar则不需要copy

合并web.xml文件内容
将WEB-INF目录下的web.xml文件内容,copy到testi web项目中的web.xml

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>
  4. classpath:config/spring-*.xml,classpath:config/workflow/spring-*.xml
  5. </param-value>
  6. </context-param>
  7. <listener>
  8. <listener-class>
  9. com.anyrt.common.web.CommonServletAppListener
  10. </listener-class>
  11. </listener>
  12. <servlet>
  13. <servlet-name>DispatcherServlet</servlet-name>
  14. <servlet-class>
  15. org.springframework.web.servlet.DispatcherServlet
  16. </servlet-class>
  17. <init-param>
  18. <param-name>contextConfigLocation</param-name>
  19. <param-value>classpath:config/web/spring-*.xml</param-value>
  20. </init-param>
  21. <load-on-startup>0</load-on-startup>
  22. </servlet>
  23. <servlet-mapping>
  24. <servlet-name>DispatcherServlet</servlet-name>
  25. <url-pattern>*.htm</url-pattern>
  26. </servlet-mapping>
  27. <servlet-mapping>
  28. <servlet-name>DispatcherServlet</servlet-name>
  29. <url-pattern>*.form</url-pattern>
  30. </servlet-mapping>
  31. <servlet-mapping>
  32. <servlet-name>DispatcherServlet</servlet-name>
  33. <url-pattern>*.list</url-pattern>
  34. </servlet-mapping>
  35. <servlet-mapping>
  36. <servlet-name>DispatcherServlet</servlet-name>
  37. <url-pattern>*.rpt</url-pattern>
  38. </servlet-mapping>
  39. <servlet-mapping>
  40. <servlet-name>DispatcherServlet</servlet-name>
  41. <url-pattern>*.rpti</url-pattern>
  42. </servlet-mapping>
  43. <filter>
  44. <filter-name>CharacterEncodingFilter</filter-name>
  45. <filter-class>
  46. org.springframework.web.filter.CharacterEncodingFilter
  47. </filter-class>
  48. <init-param>
  49. <param-name>encoding</param-name>
  50. <param-value>utf-8</param-value>
  51. </init-param>
  52. </filter>
  53. <filter-mapping>
  54. <filter-name>CharacterEncodingFilter</filter-name>
  55. <url-pattern>/*</url-pattern>
  56. </filter-mapping>

3.session保存用户信息

AnyReport的用户信息与权限信息保存在session中,session 存储的key=”_sd”

web系统通过User对象保存用户信息

  1. import com.anyrt.sdk.LoginManager;
  2. import com.anyrt.system.model.User;
  3. User user = new User();
  4. //设置用户名
  5. user.setUserName("demo");
  6. //设置姓名(可选)
  7. user.setName("Zhang San");
  8. //设置邮箱(可选)
  9. user.setEmail("xx@sina.com");
  10. //设置电话号码(可选)
  11. user.setPhone("13677777xxx");
  12. //设置可以访问全部报表与表单,true可访问
  13. user.setAccessAll(true);
  14. //将用户信息保存key为"_sd"的session中
  15. LoginManager.login(user, request);