Servlet请求处理

时间:2010-11-29 16:37:14

标签: java servlets

问候,

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

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

此致

3 个答案:

答案 0 :(得分: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中找到详细示例。

答案 1 :(得分:0)

一种可能的方法是将它们保存在文件(XML文件或属性文件)中。 将它们加载到内存中。它可以存储在一些Map中。 根据键,可以确定操作(值)。

答案 2 :(得分: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
}