проверка сервлетов - PullRequest
       7

проверка сервлетов

1 голос
/ 07 декабря 2009

Итак, у меня есть большая длинная строка запроса, которая может быть либо ...

// URL = г & Surl = у & время = г & кодек = A264 & acodec = mp3 & ширина = 400x100 или же // URL = г & Surl = у и время = г & optlevel = ш

Я использую request.getQueryString ("url"), чтобы проверить, есть ли a) qs и b) убедиться, что он не равен нулю Все это приводит к большому беспорядочному набору операторов if. Мне просто интересно, есть ли лучший способ сделать это.

пример ..

if(request.getParameter("originalURL") != null &&
        request.getParameter("originalURL").equals("") && ................) 

Спасибо, ребята

Ответы [ 4 ]

4 голосов
/ 07 декабря 2009

Конечно, просто реорганизуйте дублированный код в методы или используйте существующий каркас.

Пример базового кода рефакторинга:

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 JSF или Apache Struts .

1 голос
/ 07 декабря 2009

Я не знаю, используете ли вы какие-либо фреймворки, но, как уже упоминалось, большинство из них предоставляют служебные классы для этой цели. Если нет, возможно, вам следует создать такой класс.

Лично мне нравится Spring ServletRequestUtils, который предоставляет несколько строго типизированных статических методов для получения параметров из запроса, позволяя использовать запасные значения и проверять необходимые параметры. Если бы мне пришлось кодировать что-то эквивалентное (вздох), я бы подражал этому классу.

1 голос
/ 07 декабря 2009

Фреймворки, такие как JSF и Struts, предлагают более привлекательные абстракции для работы с запросами. Когда я работаю с необработанными API сервлетов, я использую небольшую служебную библиотеку для решения этой проблемы, а также разбираю целые числа, даты и т. Д.

 getStringParam( request, "originalUrl" ) {}

, который выдает исключение, если параметр не найден, или чаще я использую переменную, которая предоставляет значение по умолчанию, если параметр отсутствует:

 getStringParam (request, "origanlUrl", "http://someusefulDefault") {}

 getIntParam(request, "howManyRivers", 93);
0 голосов
/ 07 декабря 2009
if("something".equals(request.getParameter("originalURL")))

Нет необходимости в проверках NULL, потому что метод equals всегда будет возвращать false, если вы передадите NULL в качестве атрибута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...