Вот рефакторинг, который удаляет повторяющийся код и делает ваш скрипт совместимым с 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
Подкласс HttpServletRequestWrapper
и переопределение getParameter
методы. Описание этого класса чтения:
Обеспечивает удобную реализацию интерфейса HttpServletRequest, который может быть разделен на подклассы разработчиками, желающими адаптировать запрос к Сервлету.
В фильтре перенесите запрос в экземпляр Вашего подкласса.
Сначала необходимо получить запрос и считать все его параметры. Затем создайте другой запрос с исходными параметрами + новые и отправьте его снова.
HttpServletRequest неизменен и нет никакого способа изменить его.
Я 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);
}
Иначе можно использовать setAttribute () метод, который со строгим контролем типов. Поэтому getAttribute () метод может использоваться...
Почему Вы только не храните переменные, поскольку объем Запроса приписывает вместо того, чтобы пытаться добавить их к параметрам запроса?