0

次のようなサーブレットがあります。


@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になるのはなぜですか?

ありがとう!

4

1 に答える 1

1

WebInitParam は、アプリケーション コンテキスト全体ではなく、サーブレットの初期化パラメーターを定義していると思います。そのため、ServletContext オブジェクトを介してパラメーターにアクセスする場合は、web.xml 展開記述子でコンテキスト パラメーターを定義します。

于 2011-12-20T11:19:20.803 に答える