[스프링+부트스트랩] webjars를 이용하는 도중 No mapping found for HTTP request with URI 에러가 나옵니다.
조회수 5545회
안녕하세요 부트스트랩+스프링으로 웹사이트 만드는 연습하고 있는데 오류에 봉착하여 고수님들의 도움이 필요한 상황입니다.
maven으로 webjars 라이브러리를 받았습니다.
그리고 아래와 같이 html 파일에 webjars의 라이브러리 파일을 참조하도록 하였습니다.
-- pageTyWebsite.html --
<link rel="stylesheet" href="/webjars/bootstrap/3.3.4/dist/css/bootstrap.min.css">
<script src="/webjars/jquery/2.1.3/dist/jquery.min.js"></script>
<script src="/webjars/bootstrap/3.3.4/dist/js/bootstrap.min.js"></script>
하지만 서버를 돌려보면 아래와 같이 오류가 나면서 적용이 안됩니다.
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/webjars/jquery/2.1.3/dist/jquery.min.js] in DispatcherServlet with name 'appServlet' WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/webjars/bootstrap/3.3.4/dist/js/bootstrap.min.js] in DispatcherServlet with name 'appServlet' WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/webjars/bootstrap/3.3.4/dist/css/bootstrap.min.css] in DispatcherServlet with name 'appServlet' WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/webjars/bootstrap/3.3.4/dist/js/bootstrap.min.js] in DispatcherServlet with name 'appServlet'
해결방법 아신다면 꼭 좀 부탁드리겠습니다. 감사합니다. ㅜㅜ 아래는 제가 설정한 web.xml 파일과 servlet-context.xml 파일 그리고 controller의 메소드입니다.
-- web.xml --
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
-- servlet-context.xml --
<resources mapping="/resources/**" location="/resources/" />
<resources mapping="/webjars/**" location="/webjars/" />
<resources mapping="/css/**" location="/css/"/>
<resources mapping="/img/**" location="/img/"/>
<resources mapping="/js/**" location="/js/"/>
-- controller.java --
@RequestMapping("pageSpringFwBoard.do")
public String pageSpringFwBoard(){
return "pageTyWebsite";
}
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
프로젝트의 webapp 디렉토리 밑에 webjars 폴더에 bootstrap, jquery 등이 모두 있어야 합니다. 만약 없다면, 질문하신 에러는 정상입니다.
만약 jar 파일안에 파일들이 있는 경우에는 경로를 다음과 같이 해보세요. 관련 CSS/JS등이 webjars안에서 META-INF/resources/webjars/ 에 있는 경우입니다.
<resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />
그렇지 않은 경우 다음과 같이 시도해보세요.
-- servlet-context.xml --
<beans:bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 시작 태그 혹은 현재 감싸는 곳에 xmlns:beans="http://www.springframework.org/schema/beans" 이 선언되어 있어야 합니다. --> <resources mapping="/resources/**" location="/resources/" /> <resources mapping="/webjars/**" location="/webjars/" /> <resources mapping="/css/**" location="/css/"/> <resources mapping="/img/**" location="/img/"/> <resources mapping="/js/**" location="/js/"/>
위와 같이 직접 핸들러를 추가해서 한번 해보세요.
혹은 mvc xmlns (
xmlns:mvc="http://www.springframework.org/schema/mvc"
)가 선언되어 있다면 태그를 다음과 같이 바꾸세요.<mvc:resources mapping="/resources/**" location="/resources/" /> <mvc:resources mapping="/webjars/**" location="/webjars/" /> <mvc:resources mapping="/css/**" location="/css/"/> <mvc:resources mapping="/img/**" location="/img/"/> <mvc:resources mapping="/js/**" location="/js/"/>
-
이거 저도 똑같이 났었는데요... 저는 그냥 pom.xml에 선언한 bootstrap 버전하고 js 코드에 박아둔 버전하고 달라서 애가 못찾은거에요
한번 확인해 보세요
예를 들어서
<script src="/webjars/bootstrap/3.3.4/dist/js/bootstrap.min.js"></script>
이렇게 선언하셨으면
pom.xml에도
<dependency> <groupId>org.webjars.bower</groupId> <artifactId>bootstrap</artifactId> <version>3.3.4</version> </dependency>
버전이 위와 같이 선언 되어있어야해요
댓글 입력