1

こんにちは。 Filter クラスを作成し、web.xml を以下のように構成しました。

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>my.web.auth.LoginFilter</filter-class>
    <init-param>
        <param-name>test-param</param-name>
        <param-value>This param is for testing</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/html/test/*</url-pattern>
</filter-mapping>

URL http://{myJBoss}/html/test/index.htm にアクセスすると、LoginFilter の init() が呼び出されますが、doFilter() は呼び出されません。

これが私の Filter クラスの抜粋です。

public void init(FilterConfig config) throws ServletException {
    log.debug("[201207bb] init");  //******This line can be seen in log file
    this.config = config;
    String testParam = config.getInitParameter("test-param");
    log.debug("test-param="+testParam);  //******* This is output correctly too
}

public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {
    log.debug("[201207bb] doFilter");  //*****This line didn't appear in log file

    HttpServletRequest request = (HttpServletRequest) req;

    //Get the IP address of client machine.
    String ipAddress = request.getRemoteAddr();

    //Log the IP address and current timestamp.
    log.debug("IP "+ipAddress + ", Time "  + new Date().toString());
    chain.doFilter(req, res);
}

なぜこれがそうなのか、誰にも分かりますか?私もjspを試してみましたが、同じ結果です。

4

1 に答える 1

0

問題が解決しました。url-patternが正しく設定されていません。init()が呼び出されているからといって、url-patternが正しく設定されているわけではありません。

于 2012-07-20T03:26:10.717 に答える