朕 JAVAEE 實驗05 實驗報告

(一)項目介紹

項目名稱

使用知識點

項目效果

Lab 16

JavaBean、上下文對象、會話對象

①PrivateSum:生成一個私有累加器,將結果存在session中。

②PublicSum:生成一個公共累加器,將結果存在context中。

用戶通過頁面進行累加,頁面會限制只能輸入數字

Lab 17

過濾器、JavaBean、Servlet傳遞數據的多種方式、文件的讀取、EL表達式、JSTL

①FilterUTF8:將項目統一UTF-8編碼

②RecordsServlet專題:使用上下文對象儲存聊天信息,建立一個簡易聊天室,用戶A與用戶B的信息能合理讀取、顯示。(效果圖見文檔尾部)

③ServletDataPass專題:使用jsp進行交互(輸入信息,查看Servlet傳遞信息的細節、查看Servlet的輸出信息);建立4個Servlet,各自以不同的方式進行信息溝通(靜態變量、sendRedirect、getRequestDispatch、getSession、setAttribute)

④ShoppingServlet專題:通過txt文件讀入產品信息,添加店鋪和庫存信息,若商品售光則不予顯示。購物車能合併相同商品的不同訂單,購物車按照店鋪>產品分組顯示。將不合理的訂單或其他錯誤信息顯示給客戶。更正了原項目刷新導致表單重複提交的錯誤。

Lab 18

JavaBean、Servlet的信息傳遞

①JAVABEAN:Product類存儲商品信息、CartProduct類存儲購買信息、ShopCart類對購物車的修改請求進行具體操作。

②ShowProductServlet:顯示商品詳細信息,提供用戶將具體數目的商品加入購物車的功能。限制商品的可加入購物車的數目不大於庫存數目,不小於0。

③ShoppingServlet:獲取用戶在產品頁提交的加入購物的詳細信息,將其加入購物車中。合併相同產品的訂單。將部分違法操作進行相應提示。

④ShowCartServlet:獲取購物車的詳細信息,並提供修改購物車中商品的數目功能(由此可以刪除商品)。計算購物車中商品的總額。

Lab 19

Junit的使用、pom.xml的基本內容

編寫了一個計算器,並使用Junit進行進行加減單元測試

Lab 20

Junit、maven

LeapYear類判斷輸入年份是否爲閏年。

LeapYearTest測試LeapYear功能是正確、完善。

Lab 21

MVC框架、filter、servlet

①EncodingUTF8:統一UTF-8編碼

②Record類:賦予消息體結構(發送人、時間、發送信息)。

③login.jsp:簡單的登錄頁面,幫助用戶轉向Servlet,從而進入WEB-INF下的網頁。

④RecordsServlet:幫助登陸成功的用戶進入聊天室。處理聊天室收到的消息,放入消息記錄中。

⑤chat.jsp:聊天室,同時實現兩個用戶的聊天窗口,模仿QQ顯示雙方的信息。

Lab 22

MVCController

在Lab21的基礎上

①使用DispatherServlet接收所有處理請求,充當路由器功能,將登錄請求發送給LoginController、聊天室請求發送給RecordsController。

Lab 23

MVCValidator

在Lab22的基礎上

①LoginValidator:獲取User對象,判斷用戶名、密碼是否爲空,返回錯誤信息。

②在LoginController處添加判斷登錄信息是否合法,並進行相應反饋的操作。

 

Lab 24

SpringMVC

在Lab23的基礎上

刪除了自己編寫DispatherServlet,使用了庫中的DispatherServlet,在xml中配好此Servlet,在springmvc-servlet.xml中配好相應鏈接應該轉到的Controller,重現聊天室之前功能與效果。

 

(二)問題描述

問題1描述:Caused by: java.lang.IllegalArgumentException: The servlets named [myServlets.Servlet01] and [myServlets.Servlet03] are both mapped to the url-pattern [/Servlet01] which is not permitted at ….

問題分析:看原因應該是xml或者註解重複了,導致編譯時找不到具體的Servlet。

問題解決:查看Servlet註解,發現自己由於是複製產生的多份Servlet,它們名字改了但是註解相同。

 

問題2描述:

問題分析:應該是jsp對應行的語法問題。

問題解決:發現自己在語句 ”<input value=”xx“>” 使用了四個雙引號,將其中一對雙引號變成單引號。

 

問題3描述:

問題分析:500一般是編譯不通過,查看相關代碼。發現刪掉如下紅框,就能成功運行。

問題解決:發現是<input>中的max出錯,但是邏輯上自己要求獲取max=剩餘庫存數目,所以嘗試了下刪掉max紅框處,將min=0,改爲min=”0”,發現不影響運行,故將max=int,也改成了max=”string類型”,代碼如上。成功解決問題。

 

問題4描述:如圖:

問題分析:這問題沒經歷過,先看英文後百度。無果,休息會。

問題解決:休息的時候關掉了Eclipse,再打開又能運行成功了。

 

問題5描述:出現亂碼如下:

問題分析:應該是編碼問題,一直看filter裏面這句話不順眼。

問題解決:刪掉此類。因爲我直接都是UTF-8編碼,如果再另一種編碼讀取再編碼一次,反而產生亂碼。

 

問題6描述:出現404錯誤、即使運行單獨的頁面,也會失去CSS效果。

問題分析:先查路徑,再查細節。

問題解決:發現項目的名字錯了,去掉.war。

 

 

(三)知識點總結

1.Servlet的生命週期  

概述爲:Servlet 加載--->實例化--->服務--->銷燬。

init():負責初始化Servlet對象,只執行一次。

service():對請求的方式進行了匹配,選擇調用doGet,doPost等這些方法,然後再進入對應的方法中調用邏輯層的方法,實現對客戶的響應。

destroy():在服務器端停止且卸載Servlet時執行該方法,只執行一次。

 

2.Java包命名規範

前綴

介紹

包的命名

indi

個體項目,指個人發起,但非自己獨自完成的項目,可公開或私有項目,copyright主要屬於發起者。

indi.發起者名.項目名.模塊名.……

pers

個人項目,指個人發起,獨自完成,可分享的項目,copyright主要屬於個人

pers.個人名.項目名.模塊名.……

priv

私有項目,指個人發起,獨自完成,非公開的私人使用的項目,copyright屬於個人。

priv.個人名.項目名.模塊名.……

onem

與“indi”相同,推薦使用“indi”。

onem.發起者名.項目名.模塊名.……

team

團隊項目,指由團隊發起,並由該團隊開發的項目,copyright屬於該團隊所有。

team.團隊名.項目名.模塊名.……

com

公司項目,copyright由項目發起的公司所有。

com.公司名.項目名.模塊名.……

 

3.具體的命名規範

xxx:代表公司名稱yyy:代表項目名稱

  • com.xxx.yyy.dao      dao層接口
  • com.xxx.yyy.dao.impl    dao層實現
  • com.xxx.yyy.service    service層接口
  • com.xxx.yyy.service.impl  service層實現      
  • com.xxx.yyy.web      web層
  • com.xxx.yyy.util      工具包
  • com.xxx.yyy.domain    javabean

 

 

4.Java開發Web Application有幾種符合MVC設計模式的開發方式。

  • Jsp+Servlet+JavaBean(EJB)
  • Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)
  • TDK(Turbine,Velocity...)
  • Xsp
  • Jsp+Struts+JavaBean(EJB)

 

(四)心得

       此次實驗最大的思考是課程結束後,我能否給自己安排類似的實驗?能否在無外界壓力的情況下,有邏輯地去寫博客?想了想,如果要達成心願,我應該:①對領域知識有框架式的瞭解。②利用反饋帶來的正向引導,適當給自己反饋,但不要迷失自己的重心、目標。③一定的時間限制。

       在javaee實驗文檔中,我學會了先蒐集素材,再集中整理的文檔技巧,但是提醒自己的一點是,儘量自己打文檔,慎用複製粘貼(如果保證理解了就可以複製粘貼)。

       MVC的框架很神奇,總的概括的,View層是界面,Model層是業務邏輯,Controller層用來調度View層和Model層,將用戶界面和業務邏輯合理的組織在一起,起粘合劑的效果。所以Controller中的內容能少則少,這樣才能提供最大的靈活性。

       有一句行話“少用繼承,多有組合”,如果被繼承的類中有繼承的類用不到的方法或者屬性時,就不要去實現這個繼承。設計模式中,有時候用繼承只是爲了時上層使用的時候,不需要考慮到下面是怎麼做的而已(參考策略模式)。博客上講:MVC,View層,單獨實現了組合模式,Model層和View層,實現了觀察者模式,View層和Controller層,實現了策咯模式。

 

 

(五)項目效果圖(撿關鍵的)

部分知識點從其他博客上了解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章