1. 程式人生 > >web專案jsp中無法引入js問題

web專案jsp中無法引入js問題

今天突然遇到一個比較低階的錯誤,雖然不是大問題,但好記性不如爛筆頭,(更何況我還沒那麼好的記性)以此來記錄一下自己所踏過的坑,免得第二次遇到

專案中,在能正常啟動的情況下,(不能啟動的專案,肯定也遇不到這個問題了。)

因為jsp放到WEB-INF 下是為了防止別人不經過後臺直接訪問頁面,但js ,css 和 image 是靜態資源所以一般不用放在web-inf下。這個時候在jsp中引入js 一個不小心就出現問題了,下面是我在網上找的 和自己總結的一些引入js  的方法:

1.相對路徑引入js檔案:(以上圖檔案位置為例)

    一般相對路徑引入js,是在js 和jsp 都在webroot 下的時候。當jsp跨越web-inf去引入web-inf外 ,webroot下的js時,會出現一定的問題。(假如在上圖中webroot下model中有model.jsp,那麼引入js時可以使用相對路徑)訪問路徑為:localhost:8080/bc/model/model.jsp   ,引入程式碼如下:

<script src="../js/jquery-1.11.0.min.js"></script>

2.絕對路徑引入js

當訪問action,通過後臺返回到jsp時,這個時候就需要絕對路徑了

<script src="<%=basePath%>js/jquery-1.11.0.min.js"></script>

<script src="${pageContext.request.contextPath }/js/jquery-1.11.0.min.js"></script>

這個路徑看了又看還是沒有發現哪裡有了問題,後來通過頁面檢視路徑直接訪問js。這個時候是無法訪問的報路徑出錯,在網上又看到了別人說可能是被攔截了,(恍然大悟,我在web.xml中寫的是  / )url-pattern 填寫的規則:

1:   *.do *.action       攔截以.do結尾的請求 (不攔截 jsp png jpg .js .css)

2:   /        攔截所有請求(不攔截.jsp) 建議使用此種 方式 (攔截 .js.css .png) (放行靜態資源)

3:   /*       攔截所有請求(包括.jsp) 此種方式 不建議使用

我的web.xml檔案:

        <servlet>
		<servlet-name>bc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!-- 此處不配置 預設找 /WEB-INF/[servlet-name]-servlet.xml -->
			<param-value>classpath:spring/springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>bc</servlet-name>
		<url-pattern> / 
</url-pattern> </servlet-mapping>

我的web.xml 中使用的就是 /  ,所以能訪問到jsp,但css js  都被攔截了,無法訪問,

把 / 改為*.action  即可

問題解決!!