2012-03-17 20 views
8

Tengo un nombre de servlet EditEvent y un JSP que contiene dos formularios. Uno para agregar un nuevo evento, el otro es para eliminar un evento.Servlet que maneja solicitudes de publicaciones múltiples

¿Se considera una buena práctica usar dos servlets separados para manejar un JSP? De no ser así, ¿cómo manejarías dos solicitudes de publicaciones de un servlet? Es decir, la solicitud Agregar evento y eliminar evento.

aplausos

Respuesta

10

para manejar múltiples solicitudes de los mismos servlet que tiene que hacer un contrato para tener un parámetro de petición como 'acción'. Luego, en sus formularios, agregue esto como un campo oculto con valores como 'AGREGAR' y 'QUITAR'. Entonces, en doPost() puede verificar el valor de este parámetro y puede invocar los métodos de manejo respectivos en el mismo 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(); 
       } 
     } 

} 
+0

idea inteligente de usar el campo oculto. –

+2

El campo oculto no es necesario. Simplemente use el nombre del botón presionado. Pensé que era obvio/trivial, pero aparentemente no, así que edité mi respuesta con un ejemplo del HTML. – BalusC

9

Es toda su elección. Depende de todos los requisitos funcionales actuales y futuros. Una alternativa más sencilla es simplemente introducir una o dos if bloques en el servlet que comprobar qué botón se ha pulsado:

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

el supuesto de que los botones se ven así:

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

Una alternativa compleja es para pasar a un marco MVC normal donde solo tienes que especificar métodos de acción específicos. Por ejemplo, JSF:

<h:commandButton value="Add" action="#{bean.add}" /> 
<h:commandButton value="Remove" action="#{bean.remove}" /> 
Cuestiones relacionadas