Vereinfachtes Parsen von Multipart-/Formulardatenparametern in Servlets
Im Bereich der Servlet-Programmierung kann das Parsen von Multipart-/Formulardatenanforderungen erfolgen eine entmutigende Aufgabe. Allerdings brachte die Einführung von Servlet 3.0 mit der Methode getPart() eine willkommene Lösung. Zuvor war Apache Commons FileUpload der Standard zum Parsen solcher Anfragen.
Um die Benutzerfreundlichkeit von getPart() zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet("/parseFormData") public class ParseFormDataServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part paramPart = request.getPart("paramName"); BufferedReader reader = new BufferedReader(new InputStreamReader(paramPart.getInputStream())); String paramValue = reader.readLine(); System.out.println("Parsed parameter value: " + paramValue); } }
In Bei Servlet-Versionen vor 3.0 war die Verwendung von Apache Commons FileUpload zum Parsen von Multipart-/Formulardatenanforderungen mit einem komplexeren Prozess verbunden. Der folgende Code zeigt, wie dies erreicht werden könnte:
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/parseFormData") public class ParseFormDataCommonsFileUploadServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory); Map<String, String> parameters = new HashMap<>(); try { for (FileItem fileItem : fileUpload.parseRequest(request)) { if (fileItem.isFormField()) { parameters.put(fileItem.getFieldName(), Streams.asString(fileItem.getInputStream())); } } String paramValue = parameters.get("paramName"); System.out.println("Parsed parameter value: " + paramValue); } catch (FileUploadException e) { e.printStackTrace(); } } }
Wie Sie sehen, ist der Prozess ausführlicher und erfordert zusätzliche Bibliotheken. Durch die Entscheidung für Servlet 3.0 oder neuer und die Verwendung der integrierten getPart()-Methode können Entwickler das Parsen von Multipart-/Formulardatenanforderungen in ihren Servlet-Anwendungen erheblich optimieren.
Das obige ist der detaillierte Inhalt vonWie vereinfacht Servlet 3.0 das Parsen von Multipart-/Formulardatenparametern im Vergleich zu früheren Versionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!