(一)項目描述
實驗名 |
所用知識點 |
項目效果 |
Lab05 過濾器基礎 |
Filter的排序、調用、轉發、如何過濾 |
能夠將過濾鏈的轉發過程打印出 |
Lab06 過濾器生命週期 |
Filter過濾信息、設置錯誤信息彈框、監聽器創建對話、各域的使用 |
登陸頁能正確判斷用戶填寫的信息並進行反饋,後臺能判斷用戶是否爲合法登錄,能提供所有登錄成功者信息。 |
Lab07 配置描述符中的通配符應用 |
地址的寫法、匹配方法 |
導航頁能正確訪問到各網頁 |
Lab08 JSP基礎 |
Jsp基礎寫法 |
用jsp語法實現庫的調用,實現運算、響應等 |
(二)錯誤分析總結
【1】問題介紹:url配置爲“/j2017051046_x_xx/abc”時,瀏覽器地址卻是“/j2017051046_x_xx/j2017051046_x_xx/abc”
問題分析:可能軟件自己添加了一個項目名
問題解決:將url改成” /abc”即可
【2】問題介紹:servlet在接受filter過濾後的參數時,獲取失敗。
問題分析:①知識點不足,可能需要專門方法。②參數錯誤。
問題解決:百度與檢查代碼發現,是因爲參數錯誤。
【3】問題介紹:Tomcat啓動失敗。
問題分析:分析錯誤提示,該情況與代碼錯誤無關。可能解決方案:①刪除tomcat重啓。②向lib導入jar包。
問題解決:在實現①仍然報錯的情況下,找到了lib需要的jar包複製進lib中。
【4】問題介紹:保存html時彈出錯誤
問題分析:字符集不匹配的問題
問題解決:設置html字符集爲UTF-8
【5】問題介紹:jsp代碼報錯。
問題分析:在確定無關普通代碼錯誤時,比對老師代碼,發現jsp中,head部分使用<%! %>,不同於 body 部分使用<% %>
問題解決:在 <% 後加一個 !
(三)知識點總結
- Lab05
①對於一個web應用程序來說,過濾器是處於web容器內的一個組件,它會過濾特定請求資源請求信息和響應信息。一個請求來到時,web容器會判斷是否有過濾器與該信息資源相關聯,如果有則交給過濾器處理,然後再交給目標資源,響應的時候則以相反的順序交給過濾器處理,最後再返回給用戶瀏覽器。
- Lab06
①Filter的創建和銷燬由web服務器負責
②filter對象只會創建一次,init方法也只會執行一次,destroy方法可以釋放過濾器使用的資源
③filter在destroy()調用之前都常駐內存
- Lab07
①load-on-startup 元素的值必須是一個整數,表示servlet被加載的先後順序。如果該元素的值爲負數或者沒有設置,則容器會當Servlet被請求時再加載。如果值爲正整數或者0時,表示容器在應用啓動時就加載並初始化這個servlet,值越小,servlet的優先級越高,就越先被加載。值相同時,容器就會自己選擇順序來加載。
②/和/*的區別: < url-pattern>/</url-pattern> 會匹配到/login這樣的路徑型url,不會匹配到模式爲*.jsp這樣的後綴型url。< url-pattern>/*</url-pattern> 會匹配所有url:路徑型的和後綴型的url(包括/login,*.jsp,*.js和*.html等)。
③servlet進行url匹配時,會優先進行精確匹配,其次模糊匹配
- Lab08
①主要掌握了jsp基礎語法,對head,body中<%! %> <% %>的區別尤爲深刻。
(四)思考、展望
在自以爲完成項目、正製作navigate導航頁面時,發現幾個在項目中有很好運行效果的頁面或servlet運行失敗。其原因是:在項目中,項目的運行是線性的、參數是具備的。在單獨訪問中,可能頁面或servlet所索取的資源並不存在,但是卻在使用,這便是程序運行不成功的典型錯誤。這也是實驗1自己所反思的代碼缺少健壯性問題。
在學習中,深刻了j2ee四大作用域①pagecontext(只能在創建對象的頁面中訪問)②request(所以對於每一個新的請求,都要重新創建和刪除這個範圍內的對象)③session(在會話期間,可以訪問session範圍內的對象)④servletContext(在Web應用程序運行期間,所有的頁面都可以訪問在這個範圍內的對象)的範圍。
展望的自己能爲學習而寫作業,而不是爲寫作業而學習。