ホームページ >Java >&#&チュートリアル >/* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスする方法

/* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 02:50:10234ブラウズ

How to Access Static Resources with a Global Front Controller Servlet Mapped to /*?

グローバル フロント コントローラー サーブレットを /*

にマッピングするときに静的リソースにアクセスする /* にグローバル フロント コントローラー サーブレットをマッピングすると、 CSS、JS、画像などの静的リソース。これを解決するには、次の手順を検討してください。

より具体的な URL パターンにコントローラ サーブレットをマッピングする

/ にサーブレットをマッピングする代わりに、 /pages/ のようなより具体的なパターン。これにより、静的コンテンツを /static などの別のフォルダーに保存できるようになります。

静的コンテンツを処理するフィルターを作成する

/* をリッスンするフィルターを作成するまた、静的コンテンツに対するリクエストをデフォルトのサーブレットに転送することで透過的に処理します。その他のリクエストの場合、フィルターはコントローラー サーブレットにディスパッチする必要があります。

フィルター構成の例は次のとおりです:

<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.example.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

フィルターの実装:

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;

public class Filter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        String path = req.getRequestURI().substring(req.getContextPath().length());

        if (path.startsWith("/static")) {
            chain.doFilter(request, response); // Goes to default servlet.
        } else {
            request.getRequestDispatcher("/pages" + path).forward(request, response);
        }
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

コントローラーサーブレット マッピング:

<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>com.example.Controller</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/pages/*</url-pattern>
</servlet-mapping>

このアプローチにより、他のリクエストをコントローラー サーブレットに送信しながら、静的コンテンツを透過的に提供できます。

以上が/* にマップされたグローバル フロント コントローラー サーブレットを使用して静的リソースにアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。