经过多年的基于XML/XSLT的开发,我来到了java世界,而且我逐渐变得越来越可疑--在java web应用程序构建思想上,我似乎错过了一些非常重要的东西。
这就是我们用xslt方式构建布局的方式:我们将所需的所有数据聚合到一个XML文件中,这些XML文件可以转换为html布局。
在一些示例性伪XML语言中,它可以如下所示:
<data xmlns:x="..." xmlns:xi="...">
<x:get url="http://ourrestapi.net/rrrrrest" xpath="/rest/rest/rest[2]">
<x:param name="sortBy" value="desc" />
</x:get>
<x:get url="http://ourrestapi.net/userdata">
<x:guard test="authorized">
<x:param name="login" value="john" />
</x:guard>
</x:get>
<xi:include href="common.xml" />
</data>我想这足以说明这个想法。因此,这就是我一直试图在servlet/jsp世界中实现的方法。毫无疑问,这个问题归结为一个问题,我相信这是一个经典的jsp新手问题:“我如何在jsp页面中包含servlet输出?”
正确的答案是(如果我错了就纠正我)--我不应该。我应该使用请求链接。据我所理解(再一次,如果我混淆了事实,请更正),这意味着我应该调用servletA,它将适当的数据放到当前的请求中,然后将其转发到servletB,以此类推。最后,我们重定向到页面,并填充所有属性。
至于我,我可以说出至少有两个主要的困难:
因此,我的问题是-是从几个不同来源向JSP页面添加数据的最佳方法。
如果这些问题对经验丰富的JSP开发人员来说听起来很愚蠢的话,请原谅,事实是java世界真的很大,很成熟,所以找出真相并不总是容易的。
发布于 2011-12-19 21:25:42
我不认为servlet链接是一种非常流行的填充请求数据的方法,特别是使用重定向,因为这将清空您的请求。
通常,无论使用什么后端框架(也不再使用servlet),都会公开来自一个或多个服务的数据。
是什么使您认为请求属性需要是字符串?它们可以是你想要的任何类型。请求参数(来自JSP的数据)将是字符串,必须使用某种形式的类型转换来根据请求参数创建域对象。大多数框架都有这种或那种形式的功能。
发布于 2012-03-09 20:57:07
当我们使用xslt思考时,这就是我们构建布局的方式。因此,这就是我一直试图在servlet/jsp世界中实现的方法。
为什么?Java和XSLT是不同的东西。您这样做是因为您的应用程序是以XML为中心,而XSLT为您提供了处理它的能力,还是仅仅因为您的大脑固定在XSLT思维中?
如果您的应用程序的核心是XML,并且您的方法是合理的,那么也许可以看看阿帕奇茧谁应该能够处理XML管道。注释中还提到了其他一些框架,因此我将指出春天的一个方面:它有XSLT视图。
如果您的数据不容易转换为XML,但是您正在这样做,这样您就可以使用XSLT来处理它,仅仅因为XSLT比JSP更熟悉它,那么您就错了。
至于从多个来源收集数据,servlet/JSP链接并不是一个好主意。这些都是低级组件,(正如您自己注意到的)需要外部协调来创建应用程序工作流。通常,Servlets/JSP是由构建在其之上的web框架协调的。
Java web框架主要是MVC,因此在MVC中您将在模型中进行数据收集(模型包含业务逻辑和协调以类似于数据),然后将其发送给Controlller,后者将选择适当的视图来呈现数据。如果您的数据确实是XML (或者很容易转换到XML),那么此时XSLT视图可能会有所帮助(JSP实际上不是专门为处理XML而设计的)。
正如您自己说的,Java世界是“非常、非常庞大和成熟的”,因此您可以通过多种方式来解决这个问题(例如,有许多方法可以剥去一只猫的皮)。最终需要合并JSP片段吗?西特梅什,Apache瓷砖,定制JSP标签,甚至小港.您可以使用许多框架、库等。
但是,无论您最终选择了什么解决方案,只需确保您使用Java思维来实现它。
https://stackoverflow.com/questions/8567398
复制相似问题