XMLHttpRequest.setRequestHeader(“Content-Type”, “text/plain;charset=UTF-8”)
を指定している場合はHttpServletRequest.getParameter(String name)では取得できない。
※「Content-Type: application/x-www-form-urlencoded」であれば可能
■取得方法
request.setCharacterEncoding( "UTF-8" );
// クエリを全部取り出す
BufferedReader br = new BufferedReader( request.getReader() );
String query = br.readLine();
// クエリ文字列をJSON文字列に変換する
// すべての & を "," に置換
String replaced1 = query.replaceAll("&", "\",\"");
// すべての = を ":" に置換
String replaced2 = replaced1.replaceAll("=", "\":\"");
// {" と "} 文字列を挟む
String jsonStr = "{\"" + replaced2 + "\"}";
/ 実行
// JavaBeanオブジェクトとJSONで変換するObjectMapperを生成
ObjectMapper objectMapper = new ObjectMapper();
// JSON文字列をJavaBeanオブジェクト(TargetBean)に変換する
TargetBean targetBean = objectMapper.readValue(jsonStr, TargetBean.class);