今日 Spring、SpringMVC、Mybatis のフレームワークであるプロジェクトをビルドしたところ、JSP に js ファイルと css ファイルをインポートできないことがわかりました。後でそれが原因であることがわかりました。 SpringMVCの設定により、ディレクトリ構成は次のようになります:
project.jpg
外部ファイルの導入方法:
<script type="text/javascript" src="${ctx}/js/jquery.min.js"></script><script type="text/javascript" src="${ctx}/js/bootstrap.min.js"></script><script type="text/javascript" src="${ctx}/js/bootstrap-paginator.js"></script><script type="text/javascript" src="${ctx}/js/wiki.js"></script><link rel="stylesheet" type="text/css" href="${ctx}/css/bootstrap.min.css" /><link rel="stylesheet" type="text/css" href="${ctx}/css/shopin-list.css" />
CTX は、プロジェクトのルート パスである jsp パスで定義されます。
<%request.setAttribute("ctx", request.getContextPath());%>
これは、実際のアプリケーションでは、引用するだけで済みます。
<%@ include file="common/header.jsp"%>
しかし、これには問題ないと思いますが、fireBug は 404 エラーを報告し続け、js ファイルと css ファイルが見つかりません。考えてみても手がかりが見つかりません。長い間、すべてのパスが web.xml でインターセプトされていることがわかりました:
<servlet-mapping> <servlet-name>shopin-wiki</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
また、springmvc 構成ファイルでリソース マッピングも行いました:
<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/><mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
しかし、パス/WEB-INF/css/ の下にあります。これにより、webapp ディレクトリに置かれたファイルが見つかりません。
web.xml はプロジェクトの開始時に web.xml ファイルに設定された springmvc コントローラーをロードするため、デフォルトですべての URL がインターセプトされますが、インターセプトしたくない静的リソース。springmvc 構成ファイルでリソース マッピングを構成できます。