Доступ к параметрам инициализации сервлета из фильтра
У меня есть такой сервлет:
@WebServlet("/a/path")
@WebInitParam(name="name", value="name_value")
public class MyServlet extends HttpServlet {
//...
На этот сервлет я поставил фильтр:
@WebFilter(dispatcherTypes = { DispatcherType.REQUEST }, urlPatterns = { "/a/*" })
public class MyFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//...
HttpServletRequest req = (HttpServletRequest)request;
//problem comes here
System.out.println(req.getServletContext().getInitParameter("name"));
//...
}
Проблема в том, что даже если я установлю @WebInitParameter в MyServlet, программы выведут пустую строку (см. Закомментированную строку // проблема возникает здесь в MyFilter). Я проверил и увидел, что метод init() из сервлета выполняется до doFilter (). Так может ли кто-нибудь осветить меня по этому вопросу? Почему initParameter "name" имеет значение null, если для него установлено значение?
Спасибо!
1 ответ
Решение
Я думаю, что WebInitParam определяет параметры инициализации для сервлета, а не для всего контекста приложения, поэтому, если вы хотите получить доступ к параметрам через объект ServletContext, определите параметры контекста в своем дескрипторе развертывания web.xml.