[스프링+부트스트랩] webjars를 이용하는 도중 No mapping found for HTTP request with URI 에러가 나옵니다.

조회수 4136회

안녕하세요 부트스트랩+스프링으로 웹사이트 만드는 연습하고 있는데 오류에 봉착하여 고수님들의 도움이 필요한 상황입니다.

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>
    

    버전이 위와 같이 선언 되어있어야해요

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.