【问题标题】:Web Scripting for Java用于 Java 的 Web 脚本
【发布时间】:2010-09-10 04:39:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jsp scripting


    【解决方案1】:

    我个人使用Tapestry 5 使用 Java 创建网页,但我同意它有时可能有点矫枉过正。我会考虑使用 JAX-RS(java.net projectjsr311),它使用起来非常简单,它支持开箱即用地对 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 功能的最简单方法是阅读specification

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          如果 Java 对您来说速度不够快,我不确定 PHP 或 Ruby 是否适合您!

          【讨论】:

            猜你喜欢
            • 2010-12-19
            • 2011-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-09
            • 2013-10-22
            • 2011-01-09
            相关资源
            最近更新 更多