0

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

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

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

4

4 回答 4

2

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

我尝试过两种实现:

  • Jersey - JAX-RS 的参考实现。
  • Resteasy - 我更喜欢的实现,对编组和解组各种格式的良好支持。也相当稳定,并具有泽西岛的更多功能。

查看以下代码,了解 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 功能的最简单方法是阅读规范

于 2008-09-17T20:11:41.613 回答
1

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

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

于 2008-09-17T15:04:21.023 回答
1

查看Restlet以获得将域模型公开为 REST 服务(包括 JSON 和普通 XML 输出)的良好框架。

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

于 2008-09-17T15:04:23.427 回答
0

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

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

于 2008-09-17T15:04:00.637 回答