Jsp Servlet处理多个post请求

Jsp Servlet处理多个post请求,jsp,jakarta-ee,servlets,Jsp,Jakarta Ee,Servlets,我有一个Servlet名称EditEvent和一个包含两个表单的JSP。 一个用于添加新事件,另一个用于删除事件 使用两个单独的servlet来处理一个JSP是否被认为是一种良好的实践? 如果不是,您将如何处理来自一个servlet的两个post请求?i、 e添加事件和删除事件请求 干杯这是你的选择。这完全取决于当前和未来的功能需求。一个简单的替代方法是在servlet中引入一个或两个if块,检查按下了哪个按钮: if (request.getParameter("add") != null)

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

使用两个单独的servlet来处理一个JSP是否被认为是一种良好的实践? 如果不是,您将如何处理来自一个servlet的两个post请求?i、 e添加事件和删除事件请求


干杯

这是你的选择。这完全取决于当前和未来的功能需求。一个简单的替代方法是在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框架,在这里您只需要指定特定的操作方法。例如:


对于由同一个servlet处理多个请求,您必须订立一个契约,以具有一个请求参数,如“ACTION”。然后在表单中添加此字段作为隐藏字段,其值为“添加”和“删除”。因此,在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();
               }
      }

}

使用隐藏字段的聪明想法。隐藏字段是不必要的。只需使用按下按钮的名称即可。我认为这是显而易见的/琐碎的,但显然不是,所以我用一个HTML示例编辑了我的答案。
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();
               }
      }

}