2010-11-29 111 views
1

问候,小服务程序请求处理

我有一个servlet从查询字符串中提取“action”参数。基于这个字符串,我执行所需的操作。

检查“动作”参数值的最佳方法是什么?目前我的代码是一个很长的if,else if,else if,else if ...当我宁愿有一些从字符串到方法的映射时,我没有那么多分支条件。

问候,

回答

3

填充Map<String, Action>其中String代表您想要采取该操作的条件,Action是您为自己的操作定义的接口。

E.g.

Action action = actions.get(request.getMethod() + request.getPathInfo()); 
if (action != null) { 
    action.execute(request, response); 
} 

你可以在this answer找到一个详细的例子。

0

一种可能的方式是让他们在一个文件(XML文件或属性文件)。 将它们加载到内存中。它可以存储在某个地图中。 基于该键,可以决定操作(值)。

0

也许使用一个辅助类与枚举类型可能会有所帮助:

public class ActionHelper { 
    public enum ServletAction { 
     ActionEdit, 
     ActionOpen, 
     ActionDelete, 
     ActionUndefined 
    } 

    public static ServletAction getAction(String action) 
    { 
     action = action != null ? action : ""; 
     if (action.equalsIgnoreCase("edit")) 
      return ServletAction.ActionEdit; 
     else if (action.equalsIgnoreCase("open")) 
      return ServletAction.ActionOpen; 
     else if (action.equalsIgnoreCase("delete")) 
      return ServletAction.ActionDelete; 
     return ServletAction.ActionUndefined; 
    } 
} 

然后,你的servlet将有一些短期和简单的像:

ServletAction sa = ActionHelper.getAction(request.getParameter("action")); 
switch (sa) { 
    case ServletAction.ActionEdit: 
     // 
     break; 
    // ... more cases 
}