Java Servlet请求处理

Java Servlet请求处理,java,servlets,Java,Servlets,您好 我有一个servlet,它从查询字符串中提取一个“action”参数。根据这个字符串,我执行所需的操作 检查“action”参数值的最佳方法是什么。目前,我的代码是一个很长的if,else-if,else-if,else-if…当我希望有某种从字符串到方法的映射时,我没有那么多分支条件 问候, Ken一种可能的方法是将它们保存在一个文件(XML文件或属性文件)中。 将它们加载到内存中。它可以存储在一些地图中。 基于键,可以决定操作(值)。填充映射,其中字符串表示要获取操作的条件,操作是您为

您好

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

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

问候,


Ken

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

填充
映射
,其中
字符串
表示要获取操作的条件,
操作
是您为操作定义的界面

例如


您可以在中找到一个详细的示例。

使用带有枚举类型的帮助器类可能会有所帮助:

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
}
ServletAction sa = ActionHelper.getAction(request.getParameter("action"));
switch (sa) {
    case ServletAction.ActionEdit:
        //
        break;
    // ... more cases
}