> Java > java지도 시간 > Spring MVC에서 Global Front Controller 서블릿을 사용할 때 정적 리소스에 액세스하는 방법은 무엇입니까?

Spring MVC에서 Global Front Controller 서블릿을 사용할 때 정적 리소스에 액세스하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-05 02:35:11
원래의
387명이 탐색했습니다.

How to Access Static Resources When Using a Global Front Controller Servlet in Spring MVC?

글로벌 프론트 컨트롤러 서블릿으로 정적 리소스에 액세스

Spring MVC 디스패처를 /에서 글로벌 프론트 컨트롤러 서블릿으로 매핑하는 경우 , 일반적으로 /res와 같은 폴더에 저장되는 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>

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

그리고 필터의 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);
}
로그인 후 복사

이 구성은 다음을 보장합니다. 나머지 요청을 처리하는 컨트롤러 서블릿의 기능을 중단하지 않고 CSS 및 JS와 같은 정적 리소스에 액세스할 수 있습니다. 또한 필터를 사용하면 브라우저 관점에서 정적 파일 액세스가 완전히 투명해집니다.

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

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