Действительно ли возможно добавить к доступным параметрам запроса (HttpServletRequest)

Вот рефакторинг, который удаляет повторяющийся код и делает ваш скрипт совместимым с sh в качестве приятного бонуса.

#!/bin/sh

while read num seed; do
    sed "s/seed=0/seed=$seed/" input >"input$num"
    ./compiled_code <"input$num" > "output$num"
    rm "input$num"
done <<____HERE
    1 100
    2 200
    3 300
    : etc
____HERE

Если, как кажется, ваши начальные значения полностью предсказуемы, то sh -совместимая замена для вашего цикла for состоит в использовании внешней утилиты, такой как seq (хотя это не совсем POSIX либо).

for num in $(seq 1 20); do
    sed "s/seed=0/seed=${num}00/" input >"input$num"
    ./compiled_code <"input$num" > "output$num"
    rm "input$num"
done
9
задан Vivek Kodira 10 October 2008 в 11:00
поделиться

5 ответов

Подкласс HttpServletRequestWrapper и переопределение getParameter методы. Описание этого класса чтения:

Обеспечивает удобную реализацию интерфейса HttpServletRequest, который может быть разделен на подклассы разработчиками, желающими адаптировать запрос к Сервлету.

В фильтре перенесите запрос в экземпляр Вашего подкласса.

12
ответ дан 4 December 2019 в 11:09
поделиться

Сначала необходимо получить запрос и считать все его параметры. Затем создайте другой запрос с исходными параметрами + новые и отправьте его снова.

HttpServletRequest неизменен и нет никакого способа изменить его.

1
ответ дан 4 December 2019 в 11:09
поделиться

Я ussualy переносят исходный HttpServletRequest в новый CustomHttpServletRequest, который действует как прокси к исходному запросу и затем передает этот новый CustomHttpServletRequest цепочке фильтра.

В этом CustomHttpServletRequest Вы можете сверхъязь getParameterNames, getParameter, getParameterMap методы для возврата любых параметров, которые Вы хотите.

Это - пример фильтра:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletRequest customRequest = new CustomHttpServletRequest(httpRequest);
    customRequest.addParameter(xxx, "xxx");
    chain.doFilter(customRequest, response);
}
6
ответ дан 4 December 2019 в 11:09
поделиться

Иначе можно использовать setAttribute () метод, который со строгим контролем типов. Поэтому getAttribute () метод может использоваться...

-1
ответ дан 4 December 2019 в 11:09
поделиться

Почему Вы только не храните переменные, поскольку объем Запроса приписывает вместо того, чтобы пытаться добавить их к параметрам запроса?

0
ответ дан 4 December 2019 в 11:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: