Java 使用Servlet来处理AJAX请求?
基本上是一个肯定或否定的问题,但我也在寻求关于最佳实践的建议 如果我开始出错,请告诉我Java 使用Servlet来处理AJAX请求?,java,javascript,ajax,servlets,Java,Javascript,Ajax,Servlets,基本上是一个肯定或否定的问题,但我也在寻求关于最佳实践的建议 如果我开始出错,请告诉我 我有一个特定的Servlet(AjaxServlet?),它将处理所有AJAX请求 AjaxServlet映射到/ajax/*因此所有请求URL(如/ajax/getDataFromServer)都将由它处理 我的doGet overide函数是一个长if/elseif链,每次都检查request.getPathInfo() doGet中的每个if块处理一个特定的url调用(/ajax/getDataFro
- 我有一个特定的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,但我确信这已经完成了。如果您正在寻找一个轻量级解决方案来替换大If块,那么可以使用反射根据请求参数对对象调用方法。
至于json for java:您的基本想法听起来不错,但最好有多个类,每个类处理各自的任务。我成功使用的一种方法是使用单个servlet拦截调用,然后将任务传递给实际执行该实现的其他类。例如,您可以创建一个接口(例如,名为AJAXHandler),该接口具有一个方法
公共字符串performTask(HttpServletRequest request)
,并使用servlet中的工厂模式实例化适当的类(实现AJAXHandler)并让该类完成其工作。然后发送performTask方法(JSON字符串)的结果。当需要实现一个新的AJAX调用时,只需添加实现AJAXHandler的新类,并使用新的类信息更新工厂
对于JSON处理,我建议您看看JSON simple,在
工厂模式如所述
祝你好运 我想说的是使用REST,而不是servlet上的长if/else-if链,这也给了您更多的控制来组装要使用的服务 使用对象而不是大型if/elseif链是否有好处。我真的不介意使用这种链式方法。这只是为了让代码更干净一点吗?那么,创建一个Servlet来处理AJAX肯定是正确的吗?我喜欢为每个任务创建对象的想法,因为这样可以通过将代码保留在if块之外并将其放置在只有在请求时才会实例化的类中来节省一些资源。与在if/elsif块中执行所有操作相比,您是否认为这是一个巨大的性能提升?@user1038812它被称为“命令模式”。这不是为了表现;没有比if/else或switch语句快多少。但是速度上的差异不太重要,而可维护性和可读性上的差异将是重要的。100%同意Dave的评论。你根本看不到性能提升。事实上,这将是最慢的一点,但这是微不足道的,甚至不足以考虑。代码将更易于阅读和维护,并且在前进过程中不太可能引入错误。我们是否也应该将
HttpServletResponse
传递给performTask
方法?这样我们就可以从对象调用response.sendError
?还是最好只在Servlet中处理ServletResponse
?