使用Servlet处理AJAX请求?

时间:2011-11-10 22:46:38

标签: java javascript ajax servlets

基本上是肯定或没有问题,但我也在寻求有关实施最佳实践的建议。

让我知道何时/如果我开始出错。

  • 我有一个特定的Servlet(AjaxServlet?),它将处理所有AJAX请求
  • AjaxServlet映射到/ ajax / *所以所有请求URL如/ ajax / getDataFromServer都将由它处理
  • 我的doGet overide函数是一个很长的if / elseif链,每次检查request.getPathInfo()
  • doGet中的每个if块处理特定的url调用(/ ajax / getDataFromServer)

我想返回JSON,到目前为止,我一直在构建这些字符串。是否有我可以使用的轻量级JSON包。我知道我可以例如扩展ArrayList(ArrayListJson?)并添加一个toJson()方法,然后将任何ArrayList转换为ArrayListJson,但我确信这已经完成了。

3 个答案:

答案 0 :(得分:5)

您的基本想法听起来不错,但最好有多个类,每个类都处理自己的任务。我成功使用的方法是使用单个servlet拦截调用,然后将任务传递给实际执行的其他类。例如,您可以创建一个具有方法public String performTask(HttpServletRequest request)的接口(名称为AJAXHandler),并使用servlet中的Factory Pattern来实例化相应的类(实现AJAXHandler)并让该类完成其工作。然后发送performTask方法(JSON字符串)的结果。当您需要实现新的AJAX调用时,您只需添加实现AJAXHandler的新类并使用新的类信息更新Factory。

对于JSON处理,我建议你看看json-simple,http://code.google.com/p/json-simple/

工厂模式在http://www.oodesign.com/factory-pattern.html

中描述

祝你好运!!!

答案 1 :(得分:0)

如果您正在寻找替换大型IF块的轻量级解决方案,您可以使用反射根据请求参数调用对象上的方法。
至于java的json:http://json.org/java/

答案 2 :(得分:0)

我想说的是转而使用REST而不是servlet上的long if / else if链,这样可以更好地控制汇编要使用的服务。