Für das HTTP-Protokol stellt die Klasse javax.servlet.http.HttpServlet eine HTTP spezifische Implementation des Servlet-Interfaces zur Verfügung. Dieses Servlet entält Methoden, welche die Kommunikation über das HTTP-Protokol vereinfachen. Die service-Methode des HttpServlet leitet die Anfrage an einer der HTTP-spezifischen Methoden weiter - diese sind:
doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
In den meisten Fällen werden bei einem HttpServlet nur die Methoden
doGet und doPost überschrieben.
Nachfolgend ein einfaches HttpServlet, welches die Methoden doGet und doPost
verwendet:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet3 extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><body>Using doGet</body></html>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><body>Using doPost</body></html>"); } }
Rufen Sie das Servlet aus einem Browser unter Verwendung der Servlet-Adresse auf, wird normalerweise die doGet-Methode angesprochen. Werden z.B. Umfangreiche Formulardaten übergeben, wird normalerweise die doPost-Methode angesprochen, da so Volumenbeschränkungen umgangen werden.
Ist es für das Servlet egal ob doGet oder doPost verwendet wird, kann die doGet-Methode einfach die doPost-Methode mit ihren Parametern anstossen.
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet4 extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><body>doGet-doPost</body></html>"); } }