質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

12033閲覧

Ajaxを使ってPOST通信を行い、request.getParameterで値を取得する際にNullになってしまう

stakizawa

総合スコア117

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2019/10/08 01:48

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

date:param,

↓↓↓
data:param,

投稿2019/10/08 01:51

yambejp

総合スコア115245

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stakizawa

2019/10/08 01:59

ありがとうございます! 単純なミスでした。 お手数おかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問