【问题标题】:Servlet doPost() Method setup?Servlet doPost() 方法设置?
【发布时间】:2011-02-01 19:03:53
【问题描述】:

我有兴趣创建一个使用JSPServletsXML 的网络应用程序。

目前我有以下内容:

JSP - 表单输入。

Servlet - 检索表单数据并将该数据发送到java object

Java object (1) - 将数据转换为 XML 文件....实例化 java object (2)。

Java object (2) - 将该文件发送到database

在返回端,database 将发回另一个 XML file,然后我将使用 XSLT 处理以显示给用户。

我可以将 XSLT 代码放在原始的 Servlets doPost() 方法中吗?所以我的 doPost()` 方法会:

  1. 从我的JSP page 的表单中检索用户输入的数据。

  2. 实例化 java object 以将该数据转换为 XML,反过来 object 将实例化另一个 object 以将 XML file 发送到 database

  3. 转换从database 发送的结果XML file 并显示给用户。

一个servlet doPost() 方法可以处理所有这些吗?如果没有,我将如何设置我的应用程序和classes 来处理这个工作流程?

提前谢谢你

【问题讨论】:

    标签: java xml jsp web-applications servlets


    【解决方案1】:

    嗯,这并不是真正特定于 servlet,而更多的是一般的 Java/OOP(面向对象编程)。事实上,您可以在一个方法中完成所有操作,即使是在 main() 方法中也是如此。但是从长远来看,单个方法中的数百行或更多行并不是真正可读、可维护、可重用或可测试的。现在,您可能刚刚开始使用 Java,并且您可能不需要做任何其他事情,但是如果您需要复制(几乎)相同的代码行,那么是时候重构了。从重复的代码行中提取 变量 并将这些行包装在一个新方法中,该方法将这些 变量 作为参数并执行简单的一步任务。

    一般来说,您希望事先使用单独且可重用的类和方法将大任务拆分为单独的子任务。在您的情况下,例如,您可以为所有 DB 交互任务使用单个 DAO 类,在 XSL 的帮助下将 Javabean 转换为 XML(反之亦然)的通用 XML 帮助器类,以及(可能)管理输入/输出的域对象处理(转换/验证/错误处理/响应)和执行操作。在纸上写下如何在小的单一任务中完成全局。每项任务通常都可以通过单一方法完成。将具有相同职责和/或相同共享数据的方法分组到同一个类中。

    更进一步,对于多个任务,可能有可用的 3rd 方工具来简化任务。我可以想到例如XMLBeans 和/或XStream 来进行Javabean XML 转换。这已经可以节省大量样板代码,并且可能还会节省 XSL 步骤。

    也就是说,duffymo 建议只加载 XSL 一次是一个非常好的建议。您不需要在每个请求上一次又一次地重新执行完全完全不依赖请求参数的相同任务,这只是效率低下。

    【讨论】:

      【解决方案2】:

      我不会在 POST 中加载 XSLT,因为每个方法都必须这样做。

      在 init 方法中读取 XSTL,预编译并缓存它。只要确保你保持线程安全。

      一旦有了 XSLT,就必须将它应用到每个 XML 响应中,所以这些步骤确实属于 POST。

      【讨论】:

        【解决方案3】:

        您的doPost() 方法所要做的就是生成合适的servlet 响应(某种形式的内容和合适的HTTP 响应结构)。所以它可以做任何你想做的事情(包括上面的)。

        但是,您的呈现要求与表单提交和存储要求不同。所以我会让你的 doPost() 方法委托给一个合适的方法来呈现输出。这样,您就可以将存储的数据与向数据库提交数据分开生成输出。

        【讨论】:

        • 那么,在我的 servlet 类中创建一个单独的方法来处理 XSLT 并将结果传递给我的 doPost() 方法?
        • 这听起来很合理
        猜你喜欢
        • 2011-08-18
        • 2012-02-27
        • 1970-01-01
        • 2014-09-27
        • 2017-01-05
        • 2014-04-14
        • 2018-11-19
        • 2013-05-26
        • 1970-01-01
        相关资源
        最近更新 更多