Lotus Domino中基于Servlet的报表实现

在Domino开发环境中基于报表的解决方法一直没有很好的解决方案。最近在实际项目应用过程中结合用户的实际需求解决了用户的实际报表问题。用户要求能够对报表直接在IE中查看,也能够把报表自行保存,根据用户实际需要用Excel进行报表的输出。
    由于在实际报表需求中有很多的统计运算,所以使用JDBCODBC来解决统计运算的问题。Servlet完成整个报表的控制运行,JDBC 驱动程序完成以SQL语句方式存取NSF数据,利用JXL进行读取Excel,最后以文件流的形式把报表展现给用户客户端,并用Excel程序打开报表。

报表结构图

    整个报表的结构图如下。

Lotus Domino中基于Servlet的报表实现
图1 报表结构图

报表实现

    一 设置Domino运行Servlet

    1. 在整个报表输出过程中使用Domino的Servlet容器管理Servlet程序的运行,所以首先要启用Servlet程序并对其进行相关配置。
    打开Domino服务器服务器配置文档,找到”Domino Web引擎”标签如下图进行设置。

Lotus Domino中基于Servlet的报表实现
图2 配置Servlet

    Java服务器小程序支持:选择“Domino服务器小程序管理器”
    服务器小程序URL路径:输入“/Servlet”
    类路径:输入相关的类路径名称,多值之间用分号隔开
    其他参数使用默认。
    注意:这里的URL路径是相对于../data/domino目录的

    2. 关于Servlet开发环境JSDK
    标准Domino Designer的开发环境并不支持Servlet开发,因此必须使用第三方IDE或命令行JDK开发Servlet代码。这里我们使用的是Eclipse集成开发环境来开发Servlet。
    Domino Servlet支持JVM和Servlet Manager。当Servlet“启用”时,JVM在HTTP服务器启动之前装载;如果使用Domino Servlet Manager,在JVM装载之后装载它;如果使用第三方Servlet Manager,则只装载JVM。
    用户从浏览器访问Servlet时,URL为http://myserver/servlet/servletname。例如,输入http://myserver/servlet/DomStat运行报表统计的Servlet。
    Web服务器启动时装载Servlet,此后Servlet将在内存中开始工作。但是,Servlet代码改变后,Domino HTTP服务器必须退出并重新启动,新代码才会起作用。
    需要在Domino控制台中敲入“tell http restart”命令重新加载Http服务才能生效。
    有关Servlet配置文件经常出现的错误有:

  • 文件目录放置错误,它必须是在您的Domino数据目录下。
  • 文件扩展名错误,许多编辑器例如Notepad使用TXT扩展名。
  • 大小写错误,文件名如同Servlet名字是大小写敏感的。

    二 安装Notessql驱动程序

    Notessql是为NSF类型数据库提供的ODBC驱动程序,符合ODBC2.0规范。安装Notessql驱动程序后,NSF类型数据库就可以用SQL语句进行读取数据。目前Notessql最新的版本是3.02。首先从IBM网站下载对应的安装文件,下载完成后在运行Domino服务器的机器上进行安装并进行配置。
    安装完成后在配置ODBC数据源时可以从数据源类型中进行选择来配置与NSF数据库的连接,下图是一个例子。

Lotus Domino中基于Servlet的报表实现
图3

三 配置ODBC数据源

    启动控制面板->ODBC数据源,新建所需要的系统数据源:

Lotus Domino中基于Servlet的报表实现
图4

    数据源类型选择“系统DSN”,点“添加”新建基于NSF的数据源:

Lotus Domino中基于Servlet的报表实现
图5

    Data source name:输入数据源名称
    Domino server:输入Domino服务器名称或者Domino服务器的IP地址
    Database:选择对应的nsf数据库

    四 编写Servlet

    1. 选择熟悉的Java源程序开发环境,这里我选择的Eclipse3.1版本。
    2. 创建Servlet类
public class DomStat extends HttpServlet {

}

    3. Servlet源程序代码如下:
    源代码下载

    五 运行Servlet

    编译完成后把输出的class文件拷贝到Servlet目录下面,然后直接在IE地址栏中输入http://servername:serverport/Servlet/DomStat即可,运行效果如下图:

Lotus Domino中基于Servlet的报表实现
图6

运行环境

  • LotusDomino6.5以上
  • NotesSql3.02 for NSF的ODBC驱动程序
  • JXL.jar包读取Excel
  • Office应用程序

 

你可能感兴趣的:(servlet)