Переменные сеанса в ServletRequest
Мне нужно получить доступ к переменным сеанса через фильтр. Я даже не знаю, возможно ли это. На практике проблема заключается в том, что тип метода doFilter
из реализации javax.Servlet.Filter
- ServletRequest
, а унаследованные классы HttpServlet, параметр метода doPost request
- HttpServletRequest.
- Могу ли я получить доступ к сеансу в ServletRequest в фильтре?
- Должен ли я это сделать?
- Что вы могли бы мне порекомендовать?
Спасибо!
Ответы
Ответ 1
Просто нарисуйте полученный ServletRequest
на HttpServletRequest
.
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(false);
// ...
}
См. также:
Ответ 2
Конечно. ServletRequest
позволяет получить доступ к сеансу, содержащему атрибуты. Вы можете просматривать, добавлять, удалять и изменять атрибуты, когда захотите либо в фильтре, и в сервлете, и в jsp, и в сеансе. Этот метод очень полезен и особенно используется для связи между различными компонентами в рамках одного сеанса.