Я использую подкласс HttpServletRequestWrapper
для выполнения некоторых переводов параметров запроса, и я кеширую переведенные значения при первом запросе.Например, при первом вызове getQueryString()
я вызываю super.getQueryString()
и вычисляю желаемый результат, сохраняю его в поле и затем возвращаю его.В следующий раз я просто использую кэшированный результат.
Этот метод работает как талисман, если только нет некоторого "переадресации".Когда запрос переадресован, Tomcat заменяет исходный запрос, поэтому моя кэшированная строка запроса не изменяется, и перенаправленная страница получает исходную строку запроса, а не ту, на которую пересылается.метод очистки кэша тоже не помогает, так как если запрос обернут дважды, он вызывает setRequest
на внутренней оболочке (которая не моя), и я не знаю, когда это произойдет.
Я ищу способ получать уведомления при изменении иерархии завернутых запросов, чтобы можно было очистить кеш при появлении «вперед».