1. 程式人生 > >SSM時遇到的異常(6)——SSM的400錯誤(有關於int與integer區別分享)

SSM時遇到的異常(6)——SSM的400錯誤(有關於int與integer區別分享)

 JDK1.7+Tomcat7.0+Eclipse+SSM

當我點選""查詢""按鈕後,頁面報錯:400,但是Eclipse的控制檯沒有報異常!!!! 

參考

(1)HTTP 400 錯誤 - 請求無效 (Bad request)

(2)400(HTTP狀態碼)_百度百科

         擴充套件:404頁面 

 原因,主要跟Spring MVC、整型型別有關(懂還是不懂,朋友,都可以留言溝通哦~)

1、我的“查詢”相關的程式碼

我的EmpVo的age為int型別:

我的EmpService,實際上就是EmpDAO介面類的實現類,所以直接看EmpDAO介面類與EmpDAO配置(主要看listEmp_taskByIF方法,因為我的400是在“”查詢“”時出現的異常!!!):

 我的list方法:

我的EmpList頁面:

EmpList頁面使用了empList、edList:

瀏覽器顯示:

2.為什麼會報400

若我只查詢“部門”或“員工名”等等  或者  查詢“部門和員工名”或其他  或者  不查詢,反正就是不查詢“年齡”,當點選“查詢”按鈕時,就會報400,從此可知,錯誤就是與“年齡age”有關,

每次“登入Login“頁面轉向”員工列表EmpList”頁面過程中,即,從login.jsp到EmpController.jsp的list,再到EmpList.jsp過程中,EmpController的list()的引數emp裡的屬性都有預設值:age、empId有(int型別)預設值“0”,而String對應的變數預設為“null”,但是 到 轉入EmpList頁面後,在"查詢"模組中,年齡的輸入框裡沒有任何值,即,不是:【當“新增”時,頁面裡年齡輸入框確實會出現這樣的!!!因為age是int型別,】,而是,,你也許說,本來就是,不是嗎?哈哈哈~對的,本來就這樣,因為沒有“value=${emp.age}”!!!

好的,說完這個,我接著做講的是:“年齡”輸入框沒有輸入什麼值,當你點選“查詢”時,頁面或Spring MVC 也不會處理,不會將“沒有值的age賦‘0’值”,所以傳到後臺,age沒有值,連null或空格都不是,導致報400

3、解決

①將age的int型別改為Integer型別。

【將EmpVo裡的age改為Integer型別,EmpDAO配置中也改條件,因為Integer預設值為null,int預設值才為0

(1) Integer與int的種種比較你知道多少?

(2)java面試題之int和Integer的區別 

【兩篇文章的 並 集 就是我想分享的】

②在EmpList頁面中加上JS程式碼,控制age的值,為‘’這樣的空值時 則賦‘0’值。