我有一個Servlet名稱EditEvent和一個包含兩個表單的JSP。 一個用於添加新事件,另一個用於刪除事件。處理多個帖子請求的Servlet
使用兩個獨立的servlet處理一個JSP是否被認爲是一種很好的做法? 如果不是,你將如何處理來自一個servlet的兩個post請求?即添加事件和刪除事件請求。
歡呼
我有一個Servlet名稱EditEvent和一個包含兩個表單的JSP。 一個用於添加新事件,另一個用於刪除事件。處理多個帖子請求的Servlet
使用兩個獨立的servlet處理一個JSP是否被認爲是一種很好的做法? 如果不是,你將如何處理來自一個servlet的兩個post請求?即添加事件和刪除事件請求。
歡呼
,用來處理同一個Servlet的多個請求,你必須做出的合同,有一個像「行動」的請求參數。然後在你的表單中添加這個隱藏字段,其值爲'ADD'和'REMOVE'。因此,在doPost()中,您可以檢查此參數值,並可以在同一個servlet中調用相應的處理方法。
class YourServlet extends HttpServlet{
public void doPost(HttpReq req, HttpResp resp){
String action = reg.getParameter('ACTION');
if('ADD'.equals(action)){
addEvent();
}
if('REMOVE'.equals(action)){
removeEvent()
} else {
defaultAction();
}
}
}
這都是你的選擇。它取決於當前和未來的功能要求。一個簡單的替代方法是隻在servlet引入一個或兩個if
嵌段,其中你檢查是被按下了哪個按鈕:
if (request.getParameter("add") != null) {
// Perform add.
}
else if (request.getParameter("remove") != null) {
// Perform remove.
}
假設按鈕看起來像這樣:
<input type="submit" name="add" value="Add" />
<input type="submit" name="remove" value="Remove" />
複雜替代方案是步入一個正常的MVC框架,您只需指定特定的操作方法。例如,JSF:
<h:commandButton value="Add" action="#{bean.add}" />
<h:commandButton value="Remove" action="#{bean.remove}" />
使用隱藏字段的聰明想法。 – 2012-03-17 03:18:28
隱藏的字段是不必要的。只需使用按下的按鈕的名稱即可。我認爲這是明顯的/微不足道的,但顯然不是,所以我用HTML的一個例子編輯了我的答案。 – BalusC 2012-03-17 04:07:15