次のようなサーブレットがあります。
@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"));
//...
}
問題は、 MyServlet に@WebInitParameterを設定しても、プログラムが null 文字列を出力することです (コメント行//problem come here in MyFilterを参照)。サーブレットのinit()メソッドがdoFilter()の前に実行されることを確認しました。それで、誰かがこの問題について私に光を当てることができますか?値に設定されている場合、 initParameterの「名前」がnullになるのはなぜですか?
ありがとう!