問題描述:今天在做一個javaweb項目,在登錄系統時,一直登錄失敗,具體servlet代碼如下:

可以看到,代碼是沒有任何問題的。正常來說在接受到用戶提交的表單信息"name"和"password"后,實體類對象user應該是可以獲取到數據庫中該用戶的信息的,不應該為null,但是程序直接跳到了最后一行代碼req.getRequestDispatcher("index.jsp").forward(req, resp)。
為了弄清楚原因,剛開始用了一個比較笨的方法,就是把"name","password"和"user"的值全都打印出來,然后發現"user"的值是null,所以才導致這段代碼直接執行最后一個else語句。
這個時候,本應該往數據庫連接問題這個方向上去想的,但是!!我們的測試程序是能夠成功連接數據並且輸出數據的,證據如下:

測試程序中能獲取到數據庫信息,但servlet中使用同樣的方法獲取到的值卻為null,令我們百思不得其解。。
最后,我們使用Eclipse斷點調試代碼,發現name和password都能獲取到前端輸入的值,但是數據庫沒連接上!!
然后,我們到數據庫連接的代碼部分,檢查,也沒發現錯誤,這就很令人費解了。
上述這一整個過程,花了一下午的時間。。。
好的,重點來了,如何解決的:
原因是,那些連接數據庫等等的jar包,我雖然導入到了我的項目里,但是該項目文件夾(WEB-INF/lib)下的jar包不全,有一些jar包為了省時間是從另一個項目的文件夾下導入的。。把完整的jar包放到該項目的WEB-INF/lib目錄下后,問題解決了。

總結:1、使用到的jar包要全部放到相應的目錄下;
2、不要因為怕麻煩,而花更多的時間去解決一些原本不會產生的問題!
最后的最后,感謝幫我找bug的舍友,我向你敬禮,salute!
2021-01-11 22:18:50
