Q&A
前提・実現したいこと
Java と JavaScript(ajax)でformのやり取りをJSON形式で行おうとしています。
ajaxからJavaまではPOSTで送信出来ているかと思うのですが、request.getParameterで値を受け取るとNullになってしまいます。
ブレークポイントを置き、ajaxからJSONで値を出力しているところまでは確認しました。
requestで受け取った値を確認してみると、org.apache.catalina.connector.RequestFacade@xxxxxxxx(数字)と出力されます。
formから入力された値をservletで受け取るためにはどのようにしたらよろしいでしょうか?
発生している問題・エラーメッセージ
param count: 0 org.apache.catalina.connector.RequestFacade@26c086d2 nullを受け取りました。
該当のソースコード
index.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>time_now</title> 8<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 9</head> 10<body> 11 <form> 12 <p>text : <input type="text" id="text"></p> 13 <input type="submit" id="btn" value="送信する"> 14 15 <p id="String"></p> 16 </form> 17 18 <script> 19 $("#btn").on("click", function(){ 20 var value = $("#text").val(); 21 22 if (value.length == 0){ 23 alert("必須項目を入力してください"); 24 return false; 25 }else{ 26 var param = { 27 "key":value 28 }; 29 30 $.ajax({ 31 url:"index", 32 type:"POST", 33 date:param, 34 dateType:"json", 35 }).done(function(date){ 36 alert(value + "\n" + param); 37 }).fall(function(){ 38 alert("fall"); 39 }).always(function(){ 40 41 }); 42 }; 43 }); 44 </script> 45</body> 46</html>
Sample.java
1package sample_cc; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.util.Map; 6import java.util.Objects; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14 15/** 16 * Servlet implementation class Sample 17 */ 18@WebServlet("/Sample") 19public class Sample extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 /** 23 * @see HttpServlet#HttpServlet() 24 */ 25 public Sample() { 26 super(); 27 // TODO Auto-generated constructor stub 28 } 29 30 /** 31 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 32 */ 33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 // TODO Auto-generated method stub 35 RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/view/index.jsp"); 36 dispatcher.forward(request, response); 37 } 38 39 /** 40 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 41 */ 42 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 43 // TODO Auto-generated method stub 44 45 request.setCharacterEncoding("utf-8"); 46 47 // keyの数を取得 48 Map<String, String[]> paramMap = request.getParameterMap(); 49 50 System.out.println("param count: " + Integer.toString(paramMap.size())); 51 for (String key : paramMap.keySet()) { 52 String[] values = paramMap.get(key); 53 System.out.println( 54 String.format("%s ===> %s", 55 key, 56 (values != null ? String.join(", ", values): "") 57 ) 58 ); 59 } 60 // requestがnullか判断 61 if(Objects.equals(null, request)) { 62 System.out.println("Nullです"); 63 }else { 64 System.out.println(request); 65 } 66 67 // resultに受け取った値を取得 68 String result = request.getParameter("key"); 69 70 PrintWriter out = response.getWriter(); 71 out.print(result); 72 73 System.out.println(result + "を受け取りました。"); 74 75 } 76 77} 78
補足情報(FW/ツールのバージョンなど)
Eclipse
Tomcat 9.0
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/10/08 01:59