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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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アプリケーションを実現することができます。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1764閲覧

JsonデータをAjaxとJavaで取得したい。

Lorraine

総合スコア10

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アプリケーションを実現することができます。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2018/01/08 13:27

編集2018/01/09 14:50

###前提・実現したいこと
シンプルにRestAPIを作成したのですが、JS(Ajax)からJavaを通して、API(Json)に対してリクエストを投げレスポンスを受け取るという。プロセスがまだJavaが不慣れで実現できません。どうかアドバイス(サンプルソースなど等)の程、お力をお借りしたいです。

requestである、no1とname1を投げ、レスポンスであるno2とname2とListを受け取り、再度no2とname2でno3とname3とListを受け取りたい。

###不明点
サービスクラスとヘルパークラスの実装

###ソース1

js

1function hoge() { 2 $.ajax({ 3 url:'/sarada', 4 type:'GET', 5 data:{ 6 'no':$('#no').val(), 7 'name':$('#name').val() 8 } 9 }) 10//以下は気にしないでください。 11 }).done(function(json) { 12 // ここら辺の記述は省きます 13 // render search result 14 // omitted 15 16 }).fail(function(xhr) { 17 // render error message 18 // omitted 19 20 }); 21 return false; 22}

###requestBeen

Java

1 2//importは省き 3 4public class SaradaParameters implements Serializable { 5 6 // omitted 7 8 private Integer no; 9 10 private String name; 11 12 13}

###responseDto

Java

1 2//importは省き 3 4public class ResponseDto implements Serializable { 5 //setter/getter用 6 7 private List<XxxEntity> list; 8 private String no; 9 private String name; 10 11} // 記述は適当です。

###コントローラー

//importは省き

java

1@RequestMapping(value = "search", method = RequestMethod.GET) 2@ResponseBody 3public SearchResult search(@Validated SaradaParameters sarada) { 4 5 ResponseDto responseDto = saradaService.hoge(hoge); 6 7 if 適当なエラーケースたち 8 9 // 以下もあまり気にしないでください。thymeleafでリストを展開して表示する 10 11 model.addAttribute("saradacodeList", responseDto.getResults()); 12 13 14 return searchResult; 15}

###ServiceClass

//importは省き

java

1// この箇所の記述から少し不明確な点が有り.. 2// 多分API呼び出しを行う場所だと思うが,,,,, 3 4@Service 5public class SaradaService { 6 7 @Autowired 8 RestTemplate restTemplate; 9 10 public ResponseDto service(String ? ) { 11 return restTemplate.getForObject(URL, ResponseDto.class, ?); 12 } 13 14}

###HelperClass

java

1 2//importは省き 3 4// この箇所の実装イメージが不明 5 6@Service 7public class Saradahelper { 8 9 @Autowired 10 RestTemplate restTemplate; 11 URL 12 // API用のURLの指定はアプリケーションプロパティで定義済み、返し方が不明点 13 14 } 15 16}

json

1// 以下のJsonは適当に値を入れてますが、一旦この形式として...この辺は別に作ってあるので大丈夫です。 2// 条件1はno="0"とname="name0"で取得可能 3// 条件2はno="1"とname="山田太郎"で取得可能 4// 条件3はno="2"とname="最上恵子"で取得可能 5 6 7{ 8 条件1:{ 9"List": "list", 10"no": 1 , 11"name": 山田太郎 12}, 13条件2:{ 14"List": "list", 15"no":, 16"name": 最上恵子 17 }, 18条件3:{ 19"List": "list", 20"no": 3 , 21"name": マイケル 22 } 23}

###補足情報(言語/FW/ツール等のバージョンなど)
事前条件:RestAPIは完成済み、URLはhttp:sarada/hogehoge/{パラメータ,パラメータ}とした場合。
環境:STS,SpringBoot
言語:Java8、HTML,JS,timeleef

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

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

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

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

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

guest

回答1

0

自己解決

Ajax通信の相対パスを使用したいcontrollerClassにあわせ、Serviceクラス内でJson取得の処理を入れて解決しました。

投稿2018/01/13 14:21

Lorraine

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問