servlet 检查参数

wmi*_*ell 2 java servlets

所以我有一个很长的查询字符串,可以是......

//url=z&surl=y&time=z&codec=a264&acodec=mp3&width=400x100 或者 //url=z&surl=y&time=z&optlevel=w

我使用 request.getQueryString("url") 来检查 a) qs 是否在那里 b) 确保它不为空。这一切都导致了一大堆乱七八糟的 if 语句。我只是想知道是否有更好的方法来做到这一点。

例子..

if(request.getParameter("originalURL") != null &&
        request.getParameter("originalURL").equals("") && ................) 
Run Code Online (Sandbox Code Playgroud)

谢谢你们

Bal*_*usC 5

当然,只需将重复的代码重构为方法或使用现有框架即可。

重构代码的基本启动示例:

String field1 = getField(request, "field1", true);
String field2 = getField(request, "field2", true);
String field3 = getField(request, "field3", false);

...

public static String getField(HttpServletRequest request, String fieldName, boolean required) throws ValidatorException {
    String fieldValue = request.getParameter(fieldName);
    if (fieldValue == null || fieldValue.trim().isEmpty()) {
        if (required) {
            throw new ValidatorException("Field is required");
        } else {
            fieldValue = null; // Make empty string null so that you don't need to hassle with equals("") afterwards.
        }
    }
    return fieldValue;
}
Run Code Online (Sandbox Code Playgroud)

您当然可以更进一步,采用具有验证(和转换)功能的现有 MVC 框架,例如Sun JSFApache Struts