2012-03-17 31 views
8

Ho un nome Servlet EditEvent e un JSP che contiene due moduli. Uno per aggiungere un nuovo evento, L'altro per rimuovere un evento.Servlet che gestisce più richieste di post

È considerata buona pratica l'utilizzo di due servlet separati per gestire un JSP? In caso contrario, come gestiresti due richieste di post da un servlet? L'evento Aggiungi e rimuove la richiesta dell'evento.

evviva

risposta

10

per la gestione di più richieste da parte stessa servlet si deve fare un contratto per avere un parametro di richiesta come 'ACTION'. Quindi nelle tue forme aggiungi questo come campo nascosto con valori come "AGGIUNGI" e "RIMUOVI". Quindi, in doPost() puoi controllare questo valore di parametro e puoi invocare i rispettivi metodi di gestione nello stesso 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 intelligente dell'utilizzo del campo nascosto. –

+2

Il campo nascosto non è necessario. Basta usare il nome del pulsante premuto. Ho pensato che fosse ovvio/banale, ma apparentemente no, così ho modificato la mia risposta con un esempio di HTML. – BalusC

9

È tutta la vostra scelta. Dipende tutto dai requisiti funzionali attuali e futuri. Una semplice alternativa è quella di introdurre solo uno o due if blocchi nella servlet cui si controlla quale pulsante è stato premuto:

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

supponendo che i pulsanti aspetto:

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

complessa alternativa è passare a un normale framework MVC in cui devi solo specificare metodi di azione specifici. Ad esempio, JSF:

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