servletはPOSTデータをどのように受け取るのですか?
Servlet内では、POSTリクエストのデータをHttpServletRequestオブジェクトのメソッドを使用して受け取ることができます。
- HttpServletRequestオブジェクトを取得する。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取HttpServletRequest对象
// ...
}
- POSTリクエストのパラメータを取得する。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取POST请求参数
String param1 = request.getParameter("param1"); // 根据参数名获取单个参数的值
String[] param2 = request.getParameterValues("param2"); // 根据参数名获取多个参数的值
// ...
}
上記のコードでは、getParameter()メソッドは1つのパラメータの値を取得するために使用され、getParameterValues()メソッドは複数のパラメータの値を取得するために使用されます。これらのメソッドの引数はリクエストパラメータの名前です。
- POSTリクエストのBodyからデータを取得する。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取POST请求的Body中的数据
String requestBody = request.getReader().lines()
.reduce("", (accumulator, actual) -> accumulator + actual); // 将请求Body中的数据拼接成字符串
// ...
}
上記のコードでは、getReader()メソッドを使用してリクエストのBufferedReaderオブジェクトを取得し、lines()メソッドを使用してデータを1行ずつ読み取り、reduce()メソッドを使用して各行のデータを1つの文字列に結合しています。
上記のコードは、リクエストボディがテキスト形式のデータの場合にのみ適用されることに注意してください。リクエストボディがバイナリデータ(例:ファイルアップロード)の場合は、別の方法を使用する必要があります。