首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >servlets检查参数

servlets检查参数
EN

Stack Overflow用户
提问于 2009-12-07 19:06:40
回答 4查看 3.9K关注 0票数 2

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

//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语句。我只是想知道有没有更好的方法。

示例..

代码语言:javascript
复制
if(request.getParameter("originalURL") != null &&
        request.getParameter("originalURL").equals("") && ................) 

谢谢你们

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-07 19:15:06

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

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

代码语言:javascript
复制
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;
}

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

票数 5
EN

Stack Overflow用户

发布于 2009-12-07 19:47:31

我不知道您是否正在使用任何框架,但正如其他人所提到的,它们中的大多数都提供了用于此目的的实用程序类。如果不是这样的话,您也许应该创建这样一个类。

就我个人而言,我喜欢Spring的ServletRequestUtils,它公开了几个强类型的静态方法来从请求中获取参数,允许回退值并检查所需的参数。如果我必须编写一些等价的代码(叹息),我会模仿这个类。

票数 2
EN

Stack Overflow用户

发布于 2009-12-07 19:14:01

JSF和Struts等框架为处理请求提供了更好的抽象。当我使用原始的Servlet API时,我会使用一个小的实用程序库来处理这个问题,还会解析int和date等。

代码语言:javascript
复制
 getStringParam( request, "originalUrl" ) {}

如果没有找到参数,它将抛出一个异常,或者更常见的情况是,我使用了一个在参数缺失时提供默认值的变量:

代码语言:javascript
复制
 getStringParam (request, "origanlUrl", "http://someusefulDefault") {}

 getIntParam(request, "howManyRivers", 93);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1859339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档