ホームページ >Java >&#&チュートリアル >Servlet 3.0 では、以前のバージョンと比べて multipart/form-data パラメータの解析がどのように簡素化されていますか?
サーブレットで簡略化されたマルチパート/フォーム データ パラメーターの解析
サーブレット プログラミングの領域では、マルチパート/フォーム データ リクエストの解析は次のように行うことができます。気の遠くなるような仕事。しかし、Servlet 3.0 の導入により、getPart() メソッドによる歓迎すべき解決策がもたらされました。これ以前は、Apache Commons FileUpload がそのようなリクエストを解析するための頼りになる標準でした。
getPart() の使いやすさを説明するために、次のコード スニペットを考えてみましょう。
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 3.0 より前のバージョンのサーブレットでは、Apache Commons FileUpload を使用してマルチパート/フォームデータ リクエストを解析しており、より複雑なプロセスが必要でした。次のコードは、これを実現する方法を示しています。
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(); } } }
ご覧のとおり、このプロセスはより冗長であり、追加のライブラリが必要です。 Servlet 3.0 以降を選択し、組み込みの getPart() メソッドを利用することで、開発者は Servlet アプリケーションでの multipart/form-data リクエストの解析を大幅に効率化できます。
以上がServlet 3.0 では、以前のバージョンと比べて multipart/form-data パラメータの解析がどのように簡素化されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。