0

我正在为基于 Web 的报告系统开发 Java 应用程序。该应用程序当前使用 struts2 来处理某些报告,而使用基本 servlet 来处理其他报告。代码到处都是,我想对代码进行一些整理。

从外到内的工作流程如下:

  1. 用户点击报告导航中的链接
  2. 报告的搜索页面(包含与登录用户相关的 5 到 6 个字段)出现
  3. 用户选择参数
  4. 表单被提交到 Servlet/Struts2Controller
    • Servlet/Struts2Controller 收集参数,根据一些逻辑,调用DAO,获取数据,转发到下一页
  5. 根据参数显示最终报告

综上所述,所有报告的第 2 点基本相同。因此,我制作了一个GenericSearchClass包含显示某些报告的初始搜索页面所需的所有方法。

我的问题是:

  • 从提交表单到显示最终页面时,我可以使用哪种模式?
  • 我应该使用模板方法,抽象类和具体类都有自己的模板方法实现。
  • 如果是这样,我的模板方法应该是什么。对于此类问题,是否有更好的模式?
4

2 回答 2

1

我也和你一样。我使用 hibernate、struts2 和 jasper 进行报告。IReport 中的报表和图表设计。在hibernate中使用本机查询的查询然后使用struts 2将列表对象传递给jasper。

您在 jsp 中的步骤 1-3。您的第 4 步创建 DAO 依赖于休眠中的查询(如果必须加入您使用本机查询)。您的步骤 5. 获取对象列表(struts 2 操作)并使用 ireport 中的 struts2(struts2 xml) 设计发送到 jasper 您只需将该字段命名为与您传递的对象列表上的属性相同

或者您只是在 jasper 中查询并传递参数(用户输入)和连接(jdbc)-> 您可以详细研究 hibernate->struts2->ireport(jasper,jfreechart) 的简单方法

于 2012-05-29T03:38:30.640 回答
1

您可以查看在 struts 中使用模型视图控制器模式 [我从谷歌搜索http://www.vaannila.com/找到的教程]

如果您有长时间运行的报告,我建议您在前端使用一些 AJAX 异步运行报告,以防止用户多次请求相同的长时间运行的报告。需要半分钟以上才能填写的报告属于这一类。

希望这可以帮助。

于 2012-04-24T01:18:16.073 回答