-2

我正在研究 struts 2.0 。我正在设计一个网络应用程序。我在我的应用程序中使用 Jasper Report。我想访问*.jrxml我的操作类中的文件。我不想为文件提供硬编码路径。因此,为了动态获取路径,我用谷歌搜索并得到了可以使用getRealPath()方法获取路径的解决方案。但我发现了这样做的两个实现:

  1. 使用HttpSession获取对象ServletContext和使用对象的getRealPath()方法ServletContext。像这样:

    HttpSession session = request.getSession();
    String realPath = session.getServletContext().getRealPath("/");
    
  2. 第二种方法直接使用静态方法getServletContext()ServletActionContext然后我们可以使用该getRealPath()方法获取应用程序的真实路径。像这样:

    String realPath = ServletActionContext.getServletContext().getRealPath("/");

请告诉我,以上两者有什么区别,还请告诉我是否有其他方法可以获取路径?

4

1 回答 1

0

两者都不是“更好”,真的,我认为两者都不是特别好。

我可能会尝试在初始化 servlet 中获取上下文路径并将其粘贴到应用程序上下文中,然后执行您的操作ApplicationAware并从映射中检索值。

这具有帮助可测试性和删除操作中的静态引用的额外好处。

也就是说,我认为使用第一种方法的额外机制是零理由:它增加了很多噪音而没有明显的好处;我什至不确定为什么要考虑它。

除非有真正的需要,否则我也会对将您的行为与这样的路径联系起来有点警惕,具体用途是什么?通常,您不需要通过路径访问应用内资源。

于 2013-06-04T13:28:15.590 回答