Доступ к параметрам инициализации сервлета из фильтра - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть такой сервлет:


@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"имя" равно нулю, если для него установлено значение?

Спасибо!

1 Ответ

1 голос
/ 20 декабря 2011

Я думаю, что WebInitParam определяет параметры инициализации для сервлета, а не для всего контекста приложения, поэтому, если вы хотите получить доступ к параметрам через объект ServletContext, определите параметры контекста в вашем дескрипторе развертывания web.xml.

...