Servlet doPost()方法设置?
我有兴趣创建一个使用JSP
,Servlets
和XML
的网络应用程序。Servlet doPost()方法设置?
此刻,我有以下几点:
JSP
- 表单输入。
Servlet
- 检索表单数据并将该数据发送到java object
。
Java object
(1) - 将数据转换成XML
文件....实例化java object
(2)。
Java object
(2) - 将该文件发送到database
。
在返回方面,database
将发回另一个XML file
,然后我将使用XSLT
进行处理以显示回给用户。
我可以将XSLT
代码放在Servlets
doPost()
方法中吗?所以我的doPost()`方法将:
检索用户从形式输入我的
JSP page
数据。实例化一个
java object
将这些数据转换为XML
,在转那个object
意志实例另一个object
到XML file
发送到database
。转换从
database
发送的结果XML file
并显示给用户。
可以在一个servlet
doPost()
方法处理这一切?如果没有,我将如何设置我的应用程序和classes
来处理此工作流程?
预先感谢您
你的所有doPost()
方法做的是产生一个合适的servlet响应(某种形式的内容,和合适的HTTP响应结构)。所以它可以做你想做的任何事情(包括上述)。
但是,听起来您的呈现要求与您的表单提交和存储要求不同。所以我会将doPost()
方法委托给一个合适的渲染输出的方法。这样,您可以从存储数据生成输出,而不是将数据提交到数据库。
我不会在POST中加载XSLT,因为每种方法都必须这样做。
在init方法中读取XSTL,预编译并缓存它。只要确保你保持线程安全。
一旦拥有XSLT,就必须将其应用于每个XML响应,因此这些步骤属于POST。
那么,这不是真正专用于servlet,而是更多地涉及Java/OOP(面向对象编程)。事实上,您可以用单一方法做的所有内容,即使在main()
方法中也是如此。但是单一方法中的数百个或更多行不是真正的可读性,可维护性,可重用性或长期可测试性。现在,您可能刚刚开始使用Java,并且您可能不需要做其他任何事情,但是如果您需要复制(几乎)相同的代码行,那么现在是重构的时候了。从重复代码行中提取变量,并将这些行包装在一个新方法中,该方法将这些变量作为参数并执行一个简单的单步任务。
一般而言,您希望事先将单独的子任务分开,使用单独的,可重用的类和方法。就你而言,你可以为所有的数据库交互任务提供一个单独的DAO类,一个通用的XML帮助类将JavaBeans转换为XML,反之亦然,借助XSL和(可能)一个域对象来管理输入/输出处理(转换/验证/错误处理/响应)并执行操作。在论文中写下如何在小型单一任务中完成大局。每个任务通常都可以通过单一方法完成。将具有相同职责和/或相同共享数据的方法分组到同一个类中。
更进一步,对于几个任务,可能会有第三方工具可用,从而简化了任务。我可以想到例如XMLBeans和/或XStream来执行Javabean < - > XML转换。这已经可以节省大量的样板代码,并且可能还会节省XSL步骤。
也就是说,duffymo建议只加载一次XSL是一个很好的建议。您不需要重复执行正好是同样的任务,它不再依赖请求参数,而是每次请求都一次又一次地执行,这只是效率低下。
因此,在我的servlet类中创建一个单独的方法来处理XSLT并将结果传递给我的doPost()方法? – 2010-03-28 18:39:36
这听起来像一个合理的方法 – 2010-03-28 18:46:39