> Java > java지도 시간 > /*에 매핑된 Global Front Controller 서블릿을 사용하여 정적 리소스에 액세스하는 방법은 무엇입니까?

/*에 매핑된 Global Front Controller 서블릿을 사용하여 정적 리소스에 액세스하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-04 02:50:10
원래의
747명이 탐색했습니다.

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

Global Front Controller Servlet을 /*에 매핑할 때 정적 리소스에 액세스*

/*에 Global Front Controller Servlet을 매핑하면 정적 리소스에 대한 액세스를 방지할 수 있습니다. 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>
로그인 후 복사

이 접근 방식을 사용하면 다른 요청을 컨트롤러 서블릿으로 전달하면서 정적 콘텐츠를 투명하게 제공할 수 있습니다.

위 내용은 /*에 매핑된 Global Front Controller 서블릿을 사용하여 정적 리소스에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿