Analyse des paramètres de données multiparts/formulaires simplifiée dans les servlets
Dans le domaine de la programmation de servlets, l'analyse des requêtes multiparts/données de formulaire peut être une tâche ardue. Cependant, l'introduction de Servlet 3.0 a apporté une solution bienvenue avec la méthode getPart(). Avant cela, Apache Commons FileUpload était la norme de référence pour analyser de telles requêtes.
Pour illustrer la facilité d'utilisation de getPart(), considérez l'extrait de code suivant :
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); } }
Dans Les versions de servlet antérieures à 3.0, utilisant Apache Commons FileUpload pour analyser les requêtes multipart/form-data impliquaient un processus plus complexe. Le code suivant montre comment cela pourrait être réalisé :
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(); } } }
Comme vous pouvez le voir, le processus est plus verbeux et nécessite des bibliothèques supplémentaires. En optant pour Servlet 3.0 ou plus récent et en utilisant la méthode getPart() intégrée, les développeurs peuvent rationaliser considérablement l'analyse des requêtes multipart/form-data dans leurs applications Servlet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!