多個請求使用同一個Servlet
多個請求使用同一個Servlet
如果JSP中一個請求對應一個Servlet那要建很多Servlet,代碼冗余較多。
我們可以把一個模塊的請求封裝在一個Servlet,實現功能的模塊化,從而簡化代碼。
方法/步驟
-
1.新建test.jsp文件
-
2.輸入如下代碼,分別是3個請求,請求同一個Servlet,但是后邊跟的參數method不同
-
3.新建CustomerServlet
-
4.代碼如下,重點看紅框標記的代碼
因為增刪改查的操作既有doGet 又有doPost,為了簡化代碼,我們在doGet方法中統一調用doPost的方法
在doPost中通過獲取method參數的不同,調用不同的方法,從而區別出不同的請求,達到多個請求訪問一個Servlet的目的
-
5.運行test.jsp頁面
-
6.訪問add
-
7.訪問query
-
8.訪問delete
-
9.注意上邊的操作,訪問的都是customerServlet 無非后邊的method不同,而訪問不同的方法。
如果新增了update 方法就在servlet中新增代碼即可。
-
10.通常情況下我們可以這么使用。
但代碼還有兩個小缺點
1>當添加一個請求時,需要在Servlet中修改兩處代碼。 2>url中使用method=xxx暴露了要調用的方法,不私密,有安全隱患
解決方法如下:
難點是對於反射的理解。
方法/步驟
-
1.修改test.jsp頁面代碼,修改三個請求鏈接分別為
add.do,query.do,delete.do
-
2.修改web.xml文件中的url-pattern 為*.do, 如此配置的話所有帶有.do的訪問連接都走這個Servlet
-
3.修改doPost方法,注意反射的代碼
-
4.訪問test.jsp
-
5.訪問add
-
6.訪問query
-
7.訪問delete
-
8.但是如果我訪問一個不存在的連接例如:abc.do,會出現異常,這是由於反射中沒有找到abc.do對應的方法
-
9.我們在Servlet中反射異常代碼中修改如下,讓它跳轉到一個error.jsp
-
10.新建error.jsp 添加一句提示
-
11.再次訪問不存在的連接,就會給出提示
-