Servlet.service() for servlet [jsp] in context ....錯誤

 

Servlet.service() for servlet [jsp] in context with path [/mvcTest] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException這是在用tomcat寫一個小應用時遇到的錯誤,在網上看了不少沒看明白,最終試錯n次後發現了問題,前端

其實這個問題(我遇到的那種狀況,可能這個報錯不止我遇到的這種狀況致使)的根本緣由是:.jsp頁面代碼致使的,由於爲了實現java

前端和後臺的交互,在有些jsp代碼中須要後臺傳入相應的數據到該jsp中,因此jsp代碼中就有了接收的代碼段,而當咱們想跳轉到該數據庫

jsp頁面時卻沒有傳入相應的數據就會報上面所示的錯誤:空指針(由於後端沒有參數傳入時那麼jsp中的參數就是一個空值,而後端

空值是不能進行不少操做的)。咱們有時直接跳到jsp頁面成功是由於該jsp頁面是不須要傳入數據的。瀏覽器

如何處理這個問題:固然是傳入相應的數據了,注意用request對象傳數據時,requset對象  域空間中的數據只能存活於一個請求中,tomcat

那麼就可能須要屢次setAttribute()和屢次getAttribute()mvc

 

固然若是在jsp頁面中對 用到傳入參數的相關代碼塊作判斷也是能夠的,即知足相應的條件時再執行該代碼塊jsp

即在jsp頁面端時判斷時要加上判斷接收到的數據是否爲null,不爲空的話再執行含有參數的代碼塊;post

 

你也能夠本身測試,若是你想跳到相應的頁面,則直接在瀏覽器中訪問看是否能夠訪問到,訪問出錯,那確定就說明該jsp頁面是不能直接測試

訪問的,可能須要傳入參數,固然前提是你的代碼要是正確的;

說到這裏你明白的話就沒必要往下看了,下面是我遇到的場景

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

固然致使這個問題的緣由可能不止我下面所說的這一種。下面我先說一下我出錯時的應用場景:

我用一個servlet來管理全部的操做(簡單的增刪改查),其中須要查詢 和 註冊(增)的內容是經過表單提交的,而刪除和修改

(應用中是經過id)是經過與記錄綁定來實現是刪除那條記錄的,下面是具體的一個效果

固然進行編輯操做時須要跳轉到另一個頁面(modify.jsp)由於編輯是和對象綁定的在前端是這樣來寫的:

這句話的做用是:點擊編輯時跳到 servlet中去執行modify方法,在servlet配置時我將<url-pattern>這一項配置爲 *udo,而在dopost方法中我作了一些出來,

截取方法名,利用反射經過方法名來調用具體的方法(這個地方能夠不用糾結,固然後面我會在其餘文章中另外說這個問題),modify()方法中,我跳轉到了modify.jsp頁面,而且攜帶上了記錄的id信息,因此在寫modify.jsp代碼的時候,確定就會出現接收id的相關信息,直接看運行吧

首先看我經過正確的方法訪問到該頁面:主要看瀏覽器的地址欄,傳入了id,固然這裏id是先傳給servlet,servlet中的方法再轉發到相應的modify.jsp頁面去的,

轉發的話地址欄是不會改變的,因此地址欄沒有變爲localhost:8080/mvcTest/modify.jsp?id=5;對這個地方不理解得話能夠看一下轉發與重定向的區別。

再看一下我直接訪問modify.jsp頁面,看到這裏你可能會想我直接在url上傳值過去能夠訪問嗎?

答案固然能夠:例如能夠這樣:localhost:8080/mvcTest/modify.jsp?id=10;可是可能會形成其餘的問題,我這裏是修改,若是我傳入

的id數據庫中沒有怎麼辦,我仍是去測試一下:

直接傳id的截圖:id=100在個人數據庫中是沒有的,結果瀏覽器頁面就這樣一直空白

相關文章
相關標籤/搜索