在浏览器中呈现 Java 进程生成的数据的好方法是什么?

我广泛使用了 JSP 和各种相关框架(JSTL, 支柱, 挂毯, 等),以及与JSP无关的更全面的框架(总吨位, 开放拉斯洛)。没有一个解决方案是完全令人满意的——在大多数情况下,框架对于我的需求来说过于受限或过于复杂,而其他解决方案则需要对现有代码进行大量重构。此外,大多数框架似乎都存在性能问题。

目前,我倾向于通过返回 JSON 的简单 servlet 公开 java 数据,然后使用 PHP 或 Ruby 渲染数据的解决方案。这还有一个额外的好处,即立即将我的服务公开为 Web 服务,但我想知道我是否在这里重新发明轮子。

有帮助吗?

解决方案

我个人使用 挂毯5 使用 Java 创建网页,但我同意它有时可能有点矫枉过正。我会考虑使用 JAX-RS (java.net项目, jsr311)它使用起来非常简单,它支持开箱即用地将对象编组到 XML 或从 XML 编组对象。可以通过以下方式扩展它以支持 JSON 抛弃.

我尝试过两种实现:

  • 球衣 - JAX-RS 的参考实现。
  • 高枕无忧 - 我更喜欢的实现,对编组和解组各种格式的良好支持。也相当稳定,并且比 Jersey 有更多功能。

查看以下代码,了解 JAX-RS 可以为您做什么:

@Path("/")
class TestClass {
    @GET
    @Path("text")
    @Produces("text/plain")
    String getText() {
        return "String value";
    }
}

这个小类将在服务器的根目录中公开自身(类上的 @Path),然后在 URI /text 中公开 getText() 方法,并允许通过 HTTP GET 访问它。@Produces 注释告诉 JAX-RS 框架尝试将方法的结果转换为纯文本。

了解 JAX-RS 功能的最简单方法是阅读 规格.

其他提示

我们正在使用 条纹. 。它为您提供了比直接 servlet 更多的结构,但它允许您通过 @UrlBinding 注释控制您的 URL。我们使用它将 xml 和 json 流式传输回浏览器以获取 ajax 内容。

如果您想走这条路,您可以轻松地使用另一种技术来使用它,但您实际上可能喜欢使用条纹进行开发。

查看 雷斯特莱特 用于将域模型公开为 REST 服务(包括 JSON 和简单的 XML 输出)的良好框架。

为了呈现您的信息,也许您可​​以在客户端使用 GWT 并使用您的数据服务?如果 GWT 不能让你的船漂浮,那么也许 JQuery 可以?

也许您可以将数据生成为 XML 并使用 XSLT 呈现它?

如果 Java 对您来说不够快,我不确定 PHP 或 Ruby 是答案!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top