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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

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

Q&A

解決済

2回答

1091閲覧

サーブレットとAjaxの通信

asakuta

総合スコア100

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Ajax

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

0グッド

0クリップ

投稿2019/07/08 01:26

編集2019/07/08 04:18

前提・実現したいこと

サーブレットとAjaxの通信を試してみようと思い以下のプログラムを作成しましたがnullしか受け取れません。

試したこと

・js側をtype : "POST"に変更し、java側のコードの下記の様にdoPostに変更してもコンソール上ではなにも表示されませんでした

java

1protected void doPost(HttpServletRequest req, HttpServletResponse res) 2throws ServletException, IOException { 3//パラメータ 4String para1 = req.getParameter("param1"); 5String para2 = req.getParameter("param2"); 6 7//表示 8System.out.println(para1); 9System.out.println(para2); 10}

・ブラウザで"Test2/sampleServlet?param1=ぱらめーた&param2=123"のように直接打ち込んだ
ところコンソール上に"ぱらめーた"と"123"が出力されました

・下記の様にres.getWriter();を使用して画面出力を試みましたがブラウザ上ではnullnullとしか表示されませんでした。

java

1 2 PrintWriter pw = res.getWriter(); 3 4 pw.print(para1); 5 pw.print(para2);

該当のソースコード

java

1 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11 12@WebServlet(urlPatterns={"/sampleServlet"}) 13public class sampleServlet extends HttpServlet { 14 15 private static final long serialVersionUID = 1L; 16 17 @Override 18 public void doGet (HttpServletRequest req, HttpServletResponse res) 19 throws ServletException, IOException { 20 21 //パラメータ 22 String para1 = req.getParameter("param1"); 23 String para2 = req.getParameter("param2"); 24 25 //表示 26 System.out.println(para1); 27 System.out.println(para2); 28 } 29}

js

1var sample = function(){ 2 3 //リクエストJSON 4 var request = { 5 param1 : "ぱらめーた", 6 param2 : 123 7 }; 8 9 //ajax通信 10 $.ajax({ 11 type : "GET", 12 url : "Test2/sampleServlet", 13 data : request, 14 async : true, 15success : function(data) { 16 console.log(data); 17 }, 18 }); 19 20 }

構成
Test2
└src
│ └sampleServlet.java
└WebContent
. └sample.js

ここにより詳細な情報を記載してください。

構成に問題があり、javaからajaxを読み込めていないのでしょうか?
tomcatは問題なく動いています。

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

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

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

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

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

m.ts10806

2019/07/08 01:30

type : "GET", →type : "POST", としてdoPostで受け取った場合はどうなりますでしょうか。 >javaからajaxを読み込めていないのでしょうか? これ、ちょっと考え方が間違っています。 Ajaxはあくまでクライアント側から非同期で送られるリクエストなので、「JavaからAjaxを読み込む」わけではなく「JavaScriptから送信された非同期のリクエストを受け取る」とするのが正しい概念です。
m.ts10806

2019/07/08 01:32

あとGETですとURL直にも開けるはずです。 Test2/sampleServlet?param1=ぱらめーた&param2=123 のようにブラウザから直に打ち込んだ場合はどうなりますか?
asakuta

2019/07/08 01:56

>javaからajaxを読み込めていないのでしょうか? この文章に関しましては連携が上手くいってないことを伝えたかったのですが(ディレクトリの位置など)表現がおかしかったですね。申し訳ありません。
m.ts10806

2019/07/08 02:09

試したこととして質問本文に記載いただけたらと。
m.ts10806

2019/07/08 02:10

「null」とでているのでしたらPOSTでも同じようになりそうに思ったのですが、ちょっと違いそうですね。
asakuta

2019/07/08 02:21

本文中の試したことに追記を致しました。
guest

回答2

0

自己解決

<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Ajax</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script> </head> <body> <form> <button>test</button> </form> <script> $(function () { $("button").click(function () { // Ajax通信を開始する $.ajax({ type: "GET", url: "Test", data:{ param1:"ぱらめーた", param2:123 }, success: function() { console.log("成功"); }, error: function(){ console.log("失敗"); } }) }); }); </script> </body> </html>

上記の様にHtmlと併用することで一応動きました。ありがとうございました。

投稿2019/07/08 07:08

asakuta

総合スコア100

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

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

0

もしかしたら勘違いしていたかもしれません。

nullしか受け取れません。

これが「ブラウザデベロッパツールのコンソール」であればその通りです。
Java側ではレスポンスを何も返していません。
System.out.println()はあくまでシステムの標準出力であるため、画面に何か返すわけではありません。
response.getWriter();により出力を形成し、「画面出力」をしてください。

投稿2019/07/08 04:01

m.ts10806

総合スコア80765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問