2012-02-05 24 views
7

Quiero saber que en los servlets utilizamos los métodos doGet y doPost juntos en el mismo programa. ¿¿Cuál es el uso de ello??servlet doGet and doPost methods

¿Qué significa el siguiente código?
¿Por qué llamar al método doGet desde doPost? No estoy del todo claro acerca de este código.

public class Info extends HttpServlet 
{ 

public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws IOException, ServletException 
{ 

} 


public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws IOException, ServletException 
{ 
    doGet(request, response); 
} 
} 

Gracias

Respuesta

2

Simplemente, es para hacer que el servlet se generalice, de modo que aunque cambiemos el método de solicitud en el futuro, no es necesario editar el servlet, lo que reducirá los esfuerzos para modificar la aplicación en el futuro.

20

doGet() maneja HTTP entrante GET peticiones mientras doPost() manijas ... POST peticiones. También hay métodos equivalentes para manejar PUT, DELTE, etc.

Si envía su formulario usando GET (predeterminado), se llamará al doGet(). Si envía utilizando POST, se invocará doPost() esta vez. Si solo implementa doPost() pero el formulario usará GET, el contenedor de servlets arrojará una excepción.

En muchos programas, al servidor no le importa si la solicitud usa GET o POST, es por eso que un método simplemente delega a otro. Esto es realmente una mala práctica ya que estos métodos son inherentemente diferentes, pero muchos tutoriales lo escriben de esta manera (para bien o para mal).

+0

¿Cuándo querría realmente distinguir entre get y post en el servlet? ¿Qué tipo de caso de uso (o requisito) sería eso? –

+4

Se supone que GET obtiene un recurso. Debe ser idempotente y no debe modificar nada en el servidor. POST no es idempotente, y se usa para crear, actualizar o borrar algo en el servidor. No hay ninguna razón para usar un POST cuando se debe usar un GET, y usar un GET cuando se debe usar un POST es una mala práctica y puede causar todo tipo de problemas si el usuario actualiza la página o navega por el historial. Es común usar GET para mostrar un formulario y POST para enviarlo. –

+0

'doGet()' para '/ users' devuelve una lista,' doPost() 'para la misma URL (servlet) crea un nuevo usuario. Por supuesto, puedo delegar ambos métodos en uno solo y luego usar ['HttpServletRequest.getMethod()'] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html# getMethod()) pero solo complica las cosas. –

1

No es que hacer con una solicitud de obtención permite ver los parámetros en la URL en la ventana del navegador y la incorporación de la solicitud de publicación de los parámetros en la estructura de la solicitud y por lo tanto oculta a la vista. ¿Cómo se realizará su solicitud del cliente como una obtención o una publicación? Creo que es algo relacionado con la seguridad y evitar las inyecciones de sql, pero realmente no es mi área. Espero que algún experto corrija mi opinión/comentario, ya que necesito saberlo yo mismo.

3

Esto es para manejar ambas solicitudes, p. Ej. GET y POST de http. Dependiendo de los requisitos de la aplicación, las personas pueden optar por mantener el tipo de solicitud como GET o POST, por lo tanto, en caso de que los maneje a ambos, obtendrá un error. y en caso de que quiera manejar tanto de ellos de un modo similar a continuación, puede crear otro método doSomething y llamarlo desde sus métodos doGet y doPost para obtener más información see this answer

0

Como se anotó here de hecho puede llamar a un tercer método pero también puede anular el método service() de HttpServlet motherclass para que llame a alawys un único método.