2011-04-19 95 views
0

我想用Java编写一些可以即时计算某些内容的东西。所以,我想要一个可以回复AJAX请求的Java服务器。这就是我需要的。我希望它和人类一样简约。Java设置仅用于处理ajax请求

如果你想要一个假设的场景,假装我想写一个加法器服务。我可以传递JSON的某些东西:{“action”:“add”,“args”:[0,1]}并且获得{“sum”:1}。这就是全部,但我想在网络上。我不关心安全或其他任何事情。所以没有会话,没有https或任何东西。

我不想设置服务器或使用一些臃肿的框架。我想我可以用JNetPCap和纯Java来实现这一点,但是我也想摆脱PCap。

我猜我在问什么在标准JRE或一个非常轻的罐子可以给我什么,我正在寻找。

谢谢你们。

编辑:为了练习的目的,想象我想写的东西应该能够运行在任何安装了Java并且具有开放端口的东西上。

编辑#2:事实证明,我的整个思维过程有一个根本性的缺陷:如果我有一个服务器只提供JSON,那么没有办法在同一个域上有一个页面可以安全地请求JSON而不使用JSONP或一些东西。所以,我将使用JLHTTP。谢谢大家参与。

+1

你想写多少代码? – 2011-04-19 21:02:26

+0

为了让服务器正常运行......希望在5-10k线以下。 – McTrafik 2011-04-19 22:14:47

回答

1

This is迄今为止我用过的用Java编写的最轻量级功能的HTTP服务器(整个系统的容量为39KB)。我用它来做集成测试,我不知道它是如何作为生产服务器的。特别是,我不知道它如何处理多个并发请求。

+0

太棒了。我现在正在通过源代码,试图取出我需要的部分。 – McTrafik 2011-04-20 23:51:17

1

由于AJAX请求/响应依赖于HTTP,您将不得不使用某种HTTP服务器。我建议使用Jetty,因为它非常轻便,似乎有很多关于如何使用它的例子。

+0

谢谢。我明白,“正确”的方法是通过设置服务器并运行servlet。如果我给我的追求,我可能会使用码头,但我还没有。 – McTrafik 2011-04-19 22:20:56

0

我认为你可能太快反驳“臃肿的框架”。你要做的就是实现 - 至少可以实现 - 接收,理解和响应使用JSON的http GET请求来传递消息。虽然可以使用完全原生的代码来完成这个工作,但是如果您要在Tomcat或Jetty上进行快速教程,您最终可能会编写更多的代码来完成此任务。这就是我猜的@ jcm的评论的目的是。

但如果你真的只想得到这个工作,不去想它,你真正需要做的就是按照这样一个教程:http://www.youtube.com/watch?v=EOkN5IPoJVs

的视频使用Tomcat和Eclipse。该版本是一个较旧的版本,但它足够接近,你可以玩,并搞清楚。我只推荐Tomcat,因为它知道我所知道的;但是Jetty会像@David建议的那样工作得很好,我相信这里也有很多简单的教程。另外,一旦你启动了你的servlet,我想你会发现解析你的json请求是因为字符串很烦人。我会建议调查gson。这是一种将JSON字符串映射到POJO的非常简单的方法。

我所说的要点是,这样做与java本身一样,没有任何第三方软件可能是最短的路径,但不是最简单的。就像把你的车带到你的朋友家一样,可能是3英里的车程,但它比在树林里跑1英里还是更容易和更快。

+0

你说得对。我意识到这将是更多的代码。我不害怕编码。我只想要尽可能轻的东西。基本上我希望能够通过安装java和开放端口来运行它。 – McTrafik 2011-04-19 22:22:22

0

您可以使用Java的nio在大约一百行代码中实现一个非常基本的HTTP服务器。我写了一篇关于日志记录的讲座(作为debug-by-println的替代者)。它在概念上与Server.java示例类似,但使用了nio软件包。假设你不想自己写,或者只是想要一个例子,请看Raining Sockets。接下来,你需要一些东西来解析JSON。你可以使用Gson(没有链接,因为我的SO声望不够高),或者再次编写你自己的。如果你自己写,你可能需要使用一个解析器生成器工具,如ANTLR。如果您希望支持HTTP规范,而不仅仅匹配“HTTP GET”,那么ANTLR可能也会有所帮助。

+0

谢谢。我希望我知道那百行代码是什么。我在做这个工作。 – McTrafik 2011-04-20 23:50:29

+0

@McTrafik:我向你保证我没有从头开始。我很确定我从[O'Reilly NIO书](http://oreilly.com/catalog/9780596002886/)开始使用示例服务器。转到示例代码并浏览到com.ronsoft.books.nio.channels.HttpServer。 IIRC,该服务器遭受目录遍历攻击,并且还有其他一些问题,但它非常棒,因为我用它来构建一个适合于两张幻灯片的功能正常的服务器。完美的记录讲座。 – ccoakley 2011-04-22 16:52:33