【发布时间】:2012-11-19 10:23:23
【问题描述】:
我使用JQuery 从多个地方调用Java Servlet 以调用servlet 中的多个不同方法。目前,我传递了一个字符串(称为 methodName),然后使用不断增加的 IF ELSE 块来查看要调用哪个函数:
public String methodCaller(String methodName) throws SQLException, IOException
{
if(methodName.equals("method1"))
{
return method1(attr("permit"));
}
else if(methodName.equals("method2"))
{
return method2(attr("ring"));
}
else if(methodName.equals("method3"))
{
return method3(attr("gridRef"));
}
else if(methodName.equals("method4"))
{
return method4(attr("ring"));
}
else if(methodName.equals("method6"))
{
return method6(attr("ring"), Integer.parseInt(attr("quantity")));
}
但是,这对我来说似乎非常笨拙且效率低下,尤其是在将来方法的数量会增加的情况下。有没有更有效的方法来比较字符串?或者我应该简单地为每个方法制作一个单独的 servlet(并简单地在processRequest 中进行处理?
【问题讨论】:
-
你用的是哪个版本的java?
-
java 7 允许切换字符串。这不是更有效,但更令人愉悦。
-
如果你想花一些时间,这看起来是一个利用反射的好地方。
Map<String, Method>在这里可以很好地工作。您可以通过创建注释并迭代带注释的方法来填充地图,根据需要将它们放置在地图中。然后您可以使用Method类中的invoke()方法来调用您决定需要调用的任何方法。这有点工作,但是一旦你设置好它就会非常干净和可扩展。 -
我们正在使用 Java 6。谢谢@AlexLynch,我听说过反射,并且可能会研究它,但由于其他因素可能无法在这种情况下使用它影响哪些技术可以使用,哪些技术不能使用。
标签: java ajax string servlets comparison