1. maven工程項目結構
工程結構圖
工程結構圖
2. jsp文件中的引入方式截圖
js文件引入方式截圖
js文件引入方式截圖
3. 報錯現(xiàn)象截圖
jsp頁面報錯截圖
jsp頁面報錯截圖
4. 報錯原因分析:
從工程結構和引入路徑來看,沒有問題.這點可通過:在jsp代碼頁面,ctrl+鼠標左鍵,點擊文件路徑觀察是否可以鏈接到那個js文件 驗證.通過驗證沒有問題.但是一直報404,說明訪問被攔截住了.最后分析查找得知,是因為在web.xml缺少了SpringMVC攔截設置.
注意: 下面這段代碼,要寫在引入springMVC代碼前。
<!-- 配置攔截路徑 -->
<!-- 同樣道理,也對其他的后綴名進行了設置 -->
<servlet-mapping>
<servlet-name >default </servlet-name >
<url-pattern >*.js</url-pattern>
</servlet-mapping >
<servlet-mapping >
<servlet-name >default </servlet-name >
<url-pattern >*.css</url-pattern>
</servlet-mapping >
<servlet-mapping >
<servlet-name >default </servlet-name >
<url-pattern >*.htm</url-pattern>
</servlet-mapping >
<servlet-mapping >
<servlet-name >default </servlet-name >
<url-pattern >*.gif</url-pattern>
</servlet-mapping >
servlet-mapping是用于servlet的路徑映射配置,其中url-pattern為指定的映射攔截路徑。 在SpringMVC中,url-pattern指定了spring需要攔截派發(fā)的路徑。
url-pattern有5種配置模式:
(1)/xxx:完全匹配/xxx的路徑
(2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。
(3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉發(fā)jsp時再次被攔截,不能訪問jsp界面。
(4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態(tài)文件。
(5)/:默認模式,未被匹配的路徑都將映射到刺servlet,對jpg,js,css等靜態(tài)文件也將被攔截,不能訪問。容器匹配路徑的規(guī)則:
a.容器會對路徑進行完全匹配,找到成功匹配為止
b.容器會遞歸地嘗試匹配最長的路徑前綴。這是一次向下路徑樹的目錄,使用“/”字符作為路徑分隔符。最長的匹配決定選定的servlet
c.假于路徑有后綴,容器會匹配指定后綴的servlet去處理
d.以上三點都沒符合的,當有默認的servlet,會被調用