Servlet handling multiple post requests

2020-02-26 08:16发布

I have one Servlet name EditEvent and one JSP which contains two forms. One for adding new event, The other one is for removing an event.

Is it considered as good practice to be using two separate servlets to handle one JSP? If not, how would you handle two post requests from one servlet? i.e The Add event and remove event request.

cheers

2条回答
Lonely孤独者°
2楼-- · 2020-02-26 08:43

It's all your choice. It depends all on the current and future functional requirements. A simple alternative is to just introduce one or two if blocks in the servlet wherein you check which button is been pressed:

if (request.getParameter("add") != null) {
    // Perform add.
}
else if (request.getParameter("remove") != null) {
    // Perform remove.
}

assuming that the buttons look like this:

<input type="submit" name="add" value="Add" />
<input type="submit" name="remove" value="Remove" />

A complex alternative is to step over to a normal MVC framework where you just have to specify specific action methods. For example, JSF:

<h:commandButton value="Add" action="#{bean.add}" />
<h:commandButton value="Remove" action="#{bean.remove}" />
查看更多
等我变得足够好
3楼-- · 2020-02-26 08:56

For handling multiple requests by same servlet you have to make a contract to have a request parameter like 'ACTION'. Then in your forms add this as hidden field with values like 'ADD' and 'REMOVE'. So, in doPost() you can check this parameter value and can invoke respective handling methods in same 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();
               }
      }

}
查看更多
登录 后发表回答