在浏览器中呈现Java进程生成的数据有什么好方法?
我已广泛使用JSP和各种相关框架(JSTL,Struts,Tapestry等),以及与JSP无关的更全面的框架({ {3}},GWT)。这些解决方案都没有完全令人满意 - 在大多数情况下,框架对我的需求来说太过限制或太复杂,而其他解决方案需要对现有代码进行大量重构。此外,大多数框架似乎都存在性能问题。
目前,我倾向于通过一个返回JSON的简单servlet公开我的java数据,然后使用PHP或Ruby渲染数据。这有一个额外的好处,即立即将我的服务作为Web服务公开,但我想知道我是否在这里重新发明轮子。
答案 0 :(得分:2)
我个人使用Tapestry 5来创建使用Java的网页,但我同意它有时可能有点矫枉过正。我将研究使用JAX-RS(java.net project,jsr311)它使用起来非常简单,它支持编组和解析XML开箱即用的对象。可以通过Jettison扩展它以支持JSON。
我尝试过两种实现方式:
看看以下代码,了解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是答案!