经过多年基于 XML/XSLT 的开发后,我来到了 java 世界,我逐渐变得越来越怀疑 - 看起来我错过了 java web 应用程序构建思想中非常重要的东西。
当我们以 xslt 方式思考时,这就是我们构建布局的方式:我们将所需的所有数据聚合到一个 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>
我想这足以说明这个想法。所以,这就是我一直试图在 servlets/jsp 世界中实现的方法。毫不奇怪,这个问题归结为一个问题,我相信这是一个经典的 jsp 新手问题:“如何在 jsp 页面中包含 servlet 输出?”
正确的答案是(如果我错了,请纠正我)-我不应该。我应该使用请求链。据我了解(再次,如果我混淆事实,请纠正我)这意味着我应该调用 servletA,它将适当的数据放入当前请求,然后将其转发给 servletB,依此类推。最后,我们重定向到填充了所有属性的页面。
至于我,我至少可以说出这种方法的两个主要困难:
- 我应该保持重定向的顺序。servletA 现在是否应该重定向到 servletB,或者某些不知道监督对象应该完成的工作。
- 如果我们将所有内容存储在请求属性中,作为字符串,如果我们需要参数化 servletB 调用关于我们在 servletA 中获得的数据,我们必须提供一些繁琐的序列化/反序列化工作。
所以,我的问题是 -从几个不同的来源将数据添加到 JSP 页面的最佳方法是什么。
对不起,如果这些问题对于经验丰富的 JSP 开发人员来说听起来很愚蠢,事实上 Java 世界确实非常庞大且成熟,因此找出真相并不总是那么容易。