SpringMVC 정적 org. webjars 에 자원 404 도입
2895 단어 기술 경험
문제 발생 원인:
Spring 이 websocket 을 통합 할 때 거의 모든 demo 에서 사용 하 는 webjars 방식 으로 정적 자원 을 도입 하고 예제 에서 모든 자원 설정 은 코드 를 통 해 이 루어 집 니 다. 여기 서 xml 설정 에서 webjars 에 404 문제 가 발생 했다 는 것 을 설명 합 니 다.
통과 하 다.http://www.webjars.org/documentation#springmvc홈 페이지 설명 은 기본 설정 을 알 고 항목 에서 servlet 버 전 을 사용 하 는 것 을 주의해 야 합 니 다. 도대체 2. X 인지 3. X 인지 홈 페이지 설정 을 통 해 기본적으로 통과 합 니 다.
자원 을 충분히 찾 을 수 있 지만 이런 방식 은 버 전의 업데이트, 교체 에 불리 하고 다른 방식 으로 사용 할 때 버 전의 의존 에서 벗 어 날 수 있다. 바로 다음 과 같은 방식 이다.
그러나 xml 에서 홈 페이지 설정 에 따라 404 문제 가 계속 발생 하 는 것 을 발견 할 수 있 습 니 다. 홈 페이지 설정 설명 은 다음 과 같 습 니 다.
주의 "봄 프레임 워 크 버 전 4.2 이상 을 사용 하면 자동 으로 감지
webjars-locator
library on the classpath and use it to automatically resolve the version of any WebJar assets for you "라 는 설명 은 spring 4.2 + 버 전 을 사용 하면 spring 이 자원 의 경 로 를 자동 으로 해석 한 다 는 뜻 입 니 다. 위의 방식 으로 자원 을 도입 하면 404 가 나타 나 지 않 습 니 다.순수 자바 코드 를 통 해 어떻게 실현 되 는 지 살 펴 보 겠 습 니 다.코드 는 다음 과 같다.4. 567913. 인터넷 의 많은 인 스 턴 스 는 위의 방식 으로 불 러 옵 니 다. 반드시 주의해 야 합 니 다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/")
.resourceChain(false)
.addResolver(new WebJarsResourceResolver())
.addResolver(new PathResourceResolver());
}
}
이 줄 은 웹 Jars 를 설정 하 는 자원 해상도 기 를 명확 하 게 설정 하고 있 으 며, 홈 페이지 에 서 는 이 설정 에 대한 설명 이 없 기 때문에 의존 패 키 지 를 도입 하 였 으 나 통과 하 였 습 니 다.
.addResolver(new WebJarsResourceResolver())
이런 방식 으로 정적 자원 을 도입 하면 404 의 상황 이 발생 할 수 있다.
해결 방법:
1. 순수한 자바 코드 를 사용 하여 설정 하면 위의 코드 를 통 해 가능 합 니 다.
2. xml 파일 을 통 해 설정 하 는 경우 다음 과 같이 설정 합 니 다.
제 servelet 버 전 은 2. X 입 니 다. 만약 당신 이 3. x 라면 location = "classpath:/META - INF/resources/webjars/"는 차이 가 있 습 니 다. 다른 것 은 변화 가 없습니다. 위 설정 을 통 해 webjars 자원 을 사용 할 때 의존 하지 않 아 도 되 고 404 문제 가 발생 하지 않 습 니 다!