--下面是我的工程路徑
--我jsp的寫法
-----啟動工程,訪問js文件的路徑是這樣的, href="http://localhost:8080/activiti/css/public.css" 怎么看都沒毛病。但是提示404找不到。
所以判斷是因為訪問被攔截住了.最后分析查找得知,是因為在web.xml缺少了SpringMVC攔截設置.
-----下面這段代碼來源於其他博客轉載
通過在web.xml中添加如下設置后,問題的得以解決:
注意: 下面這段代碼,要寫在引入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需要攔截派發的路徑。
url-pattern有5種配置模式:
(1)/xxx:完全匹配/xxx的路徑
(2)/xxx/*:匹配以/xxx開頭的路徑,請求中必須包含xxx。
(3)/*:匹配/下的所有路徑,請求可以進入到action或controller,但是轉發jsp時再次被攔截,不能訪問jsp界面。
(4).xx:匹配以xx結尾的路徑,所有請求必須以.xx結尾,但不會影響訪問靜態文件。
(5)/:默認模式,未被匹配的路徑都將映射到刺servlet,對jpg,js,css等靜態文件也將被攔截,不能訪問。
容器匹配路徑的規則:
a.容器會對路徑進行完全匹配,找到成功匹配為止
b.容器會遞歸地嘗試匹配最長的路徑前綴。這是一次向下路徑樹的目錄,使用“/”字符作為路徑分隔符。最長的匹配決定選定的servlet
c.假於路徑有后綴,容器會匹配指定后綴的servlet去處理 d.以上三點都沒符合的,當有默認的servlet,會被調用