适用于Java的Web脚本

时间:2008-09-17 14:59:04

标签: java jsp scripting

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

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

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

4 个答案:

答案 0 :(得分:2)

我个人使用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

答案 1 :(得分:1)

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

如果你想走这条路,你可以轻松地使用其他技术消费它,但你可能真的喜欢用条纹进行开发。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

也许您可以将数据生成为XML并使用XSLT进行渲染?

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