Servlet doPost()方法设置?

问题描述:

我有兴趣创建一个使用JSPServletsXML的网络应用程序。Servlet doPost()方法设置?

此刻,我有以下几点:

JSP - 表单输入。

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

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

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

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

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

  1. 检索用户从形式输入我的JSP page数据。

  2. 实例化一个java object将这些数据转换为XML,在转那个object意志实例另一个objectXML file发送到database

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

可以在一个servletdoPost()方法处理这一切?如果没有,我将如何设置我的应用程序和classes来处理此工作流程?

预先感谢您

你的所有doPost()方法做的是产生一个合适的servlet响应(某种形式的内容,和合适的HTTP响应结构)。所以它可以做你想做的任何事情(包括上述)。

但是,听起来您的呈现要求与您的表单提交和存储要求不同。所以我会将doPost()方法委托给一个合适的渲染输出的方法。这样,您可以从存储数据生成输出,而不是将数据提交到数据库。

+0

因此,在我的servlet类中创建一个单独的方法来处理XSLT并将结果传递给我的doPost()方法? – 2010-03-28 18:39:36

+0

这听起来像一个合理的方法 – 2010-03-28 18:46:39

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

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

一旦拥有XSLT,就必须将其应用于每个XML响应,因此这些步骤属于POST。

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

一般而言,您希望事先将单独的子任务分开,使用单独的,可重用的类和方法。就你而言,你可以为所有的数据库交互任务提供一个单独的DAO类,一个通用的XML帮助类将JavaBeans转换为XML,反之亦然,借助XSL和(可能)一个域对象来管理输入/输出处理(转换/验证/错误处理/响应)并执行操作。在论文中写下如何在小型单一任务中完成大局。每个任务通常都可以通过单一方法完成。将具有相同职责和/或相同共享数据的方法分组到同一个类中。

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

也就是说,duffymo建议只加载一次XSL是一个很好的建议。您不需要重复执行正好是同样的任务,它不再依赖请求参数,而是每次请求都一次又一次地执行,这只是效率低下。