> Java > java지도 시간 > /*에 매핑된 Global Front Controller 서블릿을 사용하여 정적 리소스에 어떻게 액세스할 수 있습니까?

/*에 매핑된 Global Front Controller 서블릿을 사용하여 정적 리소스에 어떻게 액세스할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-08 14:22:10
원래의
348명이 탐색했습니다.

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

/*의 전역 프런트 컨트롤러 서블릿: 정적 리소스 액세스 해결

/*의 글로벌 프런트 컨트롤러 서블릿을 매핑할 때 다음과 같은 정적 리소스에 액세스하는 것이 어려워집니다. 일반적으로 별도의 폴더에 저장되는 CSS, JS 및 이미지. 이 문서에서는 전역 전면 컨트롤러 기능을 유지하면서 이러한 정적 파일에 대한 액세스를 복원하는 솔루션에 대해 자세히 설명합니다.

권장되는 접근 방식에는 두 단계가 포함됩니다.

1. 특정 경로에 컨트롤러 서블릿 매핑

/을 컨트롤러 서블릿의 URL 패턴으로 사용하는 대신 /pages/와 같은 보다 구체적인 경로에 매핑하세요. 이렇게 하면 컨트롤러의 범위에서 정적 리소스를 제외할 수 있습니다.

2. 정적 콘텐츠에 대한 필터 구현

/*를 수신하는 필터를 만듭니다. 이 필터는 정적 리소스에 대한 요청에 대한 체인을 투명하게 계속하고 다른 콘텐츠에 대한 요청을 컨트롤러 서블릿에 전달합니다.

필터의 doFilter() 메서드에서 다음 코드를 사용합니다.

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);
}
로그인 후 복사

이 코드는 요청 경로가 "/static"(또는 정적 리소스에 할당된 다른 접두사)으로 시작하는지 확인합니다. true인 경우 요청은 일반적으로 정적 리소스 폴더에 매핑되는 기본 서블릿으로 전달됩니다. 그렇지 않으면 요청이 컨트롤러 서블릿으로 전달됩니다(*/pages에 매핑된 것으로 가정).

이 솔루션은 정적 리소스가 컨트롤러 서블릿의 매핑에서 제외되는 동시에 다른 요청이 처리되도록 허용합니다. 예상대로 컨트롤러. 이는 글로벌 프론트 컨트롤러에 대한 필요성과 정적 리소스의 접근성 사이의 균형을 맞추는 실용적인 방법입니다.

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

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