我应该将哪种设计模式用于简单的报告系统

时间:2012-04-24 01:08:10

标签: java design-patterns servlets struts2

我正在开发基于Web的报告系统的Java应用程序。该应用程序当前将struts2用于某些报告,而将基本servlet用于其他报告。代码遍布各处,我希望对代码有一定的了解。

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

  1. 用户点击导航中的链接以获取报告
  2. 报告的搜索页面(有5到6个与登录用户相关的字段)出现
  3. 用户选择参数
  4. 表单被提交给Servlet / Struts2Controller
    • Servlet / Struts2Controller基于某些逻辑收集参数,调用DAO,获取数据并转发到下一页
  5. 取决于显示最终报告的参数
  6. 从上面可以看出,所有报告的第2点大致相同。所以我创建了一个GenericSearchClass,其中包含显示某些报告的初始搜索页面所需的所有方法。

    我的问题是:

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

2 个答案:

答案 0 :(得分:1)

您可以在struts中使用模型视图控制器模式 [我在谷歌搜索http://www.vaannila.com/]

中找到的教程

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

希望这有帮助。

答案 1 :(得分:1)

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

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

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