Фильтрация запросов клиент-сервера - PullRequest
0 голосов
/ 09 мая 2019

У меня около 90 меню, в каждом из которых есть как минимум 4 экрана, представляющие действия CRUD.Из них 13 меню поддерживают балтийских персонажей, а другие - нет.Но все же в этих 87 меню много введенных пользователем балтийских символов, из-за которых мусорные данные заполняются на Бэк-энде.BE - это другая команда, и они не могут приспособиться к изменениям atm, из-за чего мне приходится обрабатывать это на Front end.

Я ищу универсальное решение, поэтому я просто пишу метод и повторно использую везде.

Общее решение, которое я решил, состоит в том, чтобы выполнить итерацию объекта bean-объекта запроса и переосмыслить итерацию по его методам и проверить каждое значение для символов Baltic.

Другое решение, которое у меня было, - это итерация запроса HttpServlet.параметры и проверьте их на наличие балтийских символов.

Я использую Struts2 и java 7. Я хотел знать, какой из двух вышеупомянутых вариантов лучше использовать.Я осознаю, что рефлексия сопровождается предупреждением о производительности.Но я считаю, что он лучше, чем параметры запроса httpservlet.

Если есть какое-либо другое решение, попросите вас поделиться своей идеей / предложением.

РЕДАКТИРОВАТЬ: Для некоторых меню в нашем приложенииМы использовали архитектуру jsp-сервлетов, то же самое необходимо реализовать и в подобных меню.

1 Ответ

0 голосов
/ 10 мая 2019

Не уверен, что вы имеете в виду под «компонентом запроса».

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

Это одна из причин, почему я рассматриваю S2 как тонкий слой между сетью ибизнес-логика: я не склонен предварительно оптимизировать то, что отправляется бизнес-логике, поэтому я могу обеспечить фильтрацию на веб-уровне для подобных ситуаций (например, фильтр обрезки пробелов может применяться во всем приложении).

Перехватчик обрезки выглядит примерно так (начиная с Struts 2.1):

public class TrimInterceptor extends MethodFilterInterceptor {

    private List<String> excluded = new ArrayList<String>();

    protected String doIntercept(ActionInvocation invocation) throws Exception {
        Map<String, Object> parameters = invocation.getInvocationContext().getParameters();

        for (String param : parameters.keySet()) {
            if (isIncluded(param)) {
                String[] vals = (String[]) parameters.get(param);
                for (int i = 0; i < vals.length; i++) {
                    vals[i] = vals[i].trim();
                }
            }
        }

        return invocation.invoke();
    }

    private boolean isIncluded(String param) {
        for (String exclude : excluded) {
            if (param.startsWith(exclude)) {
                return false;
            }
        }

        return true;
    }

    public void setExcludedParams(String excludedParams) {
        for (String s : StringUtils.split(excludedParams, ",")) {
            excluded.add(s.trim());
        }
    }
}

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

String[] vals = (String[]) parameters.get(param);

Если это Балтика, вы делаете с ней все, что вам нужно, и возвращаете ей значение:

vals[i] = vals[i].trim();

Здесь вырезаются пробелы, но вы получаетеидея.

Вероятно, сейчас есть несколько отличий (это относится к эпохе Struts 2.1), но этого должно быть достаточно, чтобы помочь вам.

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