Servlet处理多个帖子请求

时间:2012-03-17 03:02:34

标签: jsp java-ee servlets

我有一个Servlet名称EditEvent和一个包含两个表单的JSP。 一个用于添加新事件,另一个用于删除事件。

使用两个单独的servlet来处理一个JSP被认为是一种好习惯吗? 如果没有,你将如何处理来自一个servlet的两个post请求?即添加事件和删除事件请求。

欢呼声

2 个答案:

答案 0 :(得分:12)

为了处理同一个servlet的多个请求,你必须签订一个像'ACTION'这样的请求参数的契约。然后在表单中将其添加为隐藏字段,其值为“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();
               }
      }

}

答案 1 :(得分:11)

这都是你的选择。这完全取决于当前和未来的功能要求。一个简单的替代方法是在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}" />