与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
<body>
<form action="http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt" method="post" target="rptframe" id="rptForm">
</form>
<iframe id="rptframe" name="rptframe" width="100%" height="100%"></iframe>
<script type="text/javascript">
$(function(){
$("#rptForm").submit();
})
</script>
</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
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/spring-*.xml,classpath:config/workflow/spring-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
com.anyrt.common.web.CommonServletAppListener
</listener-class>
</listener>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/web/spring-*.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.list</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.rpt</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.rpti</url-pattern>
</servlet-mapping>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.session保存用户信息
AnyReport的用户信息与权限信息保存在session中,session 存储的key=”_sd”
web系统通过User对象保存用户信息
import com.anyrt.sdk.LoginManager;
import com.anyrt.system.model.User;
User user = new User();
//设置用户名
user.setUserName("demo");
//设置姓名(可选)
user.setName("Zhang San");
//设置邮箱(可选)
user.setEmail("xx@sina.com");
//设置电话号码(可选)
user.setPhone("13677777xxx");
//设置可以访问全部报表与表单,true可访问
user.setAccessAll(true);
//将用户信息保存key为"_sd"的session中
LoginManager.login(user, request);