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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

Q&A

解決済

1回答

2804閲覧

Java - Ajaxで取得した値をセッションにいれたいです

akamarukun

総合スコア27

Java

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

0グッド

0クリップ

投稿2018/06/28 07:08

商品一覧JSP

java

1<%@ page import="java.util.ArrayList"%> 2<%@ page import="bean.ItemBean"%> 3<%@ page language="java" contentType="text/html; charset=UTF-8" %> 4 5<!DOCTYPE html> 6<html> 7 <head> 8 <title>ECサイト</title> 9 <link href="/ecsite/css/shopping.css" rel="stylesheet" type="text/css" /> 10 11 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 12 13 <script> 14jQuery( function() { 15 $(".list").change(function(){ 16 var value = $("option:selected",this).val(); 17 var item = $(this).next().val(); 18 alert(value); 19 alert(item); 20 var request = { 21 param1 : value, 22 param2 : item 23 }; 24 25 //ajaxでservletにリクエストを送信 26 $.ajax({ 27 type : "GET", //GET / POST 28 url : "/ecsite/ajaxitem", //送信先のServlet URL 29 data : request, //リクエストJSON 30 async : true, //true:非同期(デフォルト), false:同期 31 success : function(data) { 32 //通信が成功した場合に受け取るメッセージ 33 alert("success"); 34 }, 35 error : function(XMLHttpRequest, textStatus, errorThrown) { 36 alert("リクエスト時になんらかのエラーが発生しました:" + textStatus +":\n" + errorThrown); 37 } 38 }); 39 }) 40 }) 41</script> 42 43 </head> 44 <body> 45 <jsp:include page="header.jsp"/> 46 <h1>商品一覧</h1> 47 <% ArrayList<ItemBean> itemList = (ArrayList<ItemBean>)request.getAttribute("itemList"); %> 48 <form action="./ajaxitem" > 49 <table class="table_list"> 50 51 <tbody> 52 <tr> 53 <!-- <th>商品ID</th> --> 54 <th>商品画像</th> 55 <th>商品名</th> 56 <th>価格</th> 57 <th>在庫数</th> 58 <th>数量</th> 59 </tr> 60 <%-- Beanの要素数分(商品の種類分)テーブルを作成 --%> 61 <% for(ItemBean bean : itemList) { %> 62 <tr> 63 <%-- 商品ID --%> 64 <!-- <td><%= bean.getItemId() %></td> --> 65 <%-- 商品画像 --%> 66 <td><img src ="<%= bean.getItemImage() %>" width="100" height="auto"></td> 67 <%-- 商品名 --%> 68 <td><%= bean.getItemName() %></td> 69 <%-- 価格 --%> 70 <td class="int"><%= bean.getPrice() %></td> 71 <%-- 数量(在庫) --%> 72 <td class="int"><%= bean.getQuantity() %></td> 73 74 <% if(bean.getQuantity() != 0) { %> 75 76 <td> 77 <select class="list" name="<%= bean.getItemId() %>list"> 78 <% for(int i = 0; i <= bean.getQuantity(); i++) { %> 79 <option value=<%=i%>><%=i%></option> 80 <% } %> 81 </select> 82 83 <input type="hidden" name="item" value="<%= bean.getItemId() %>"> 84 </td> 85 86 <%-- 数量(在庫)がない場合は「売り切れ!」と表示 --%> 87 <% } else { %> 88 <td></td> 89 <td class="button">売り切れ!</td> 90 <% } %> 91 </tr> 92 <% } %> 93 </tbody> 94 </table> 95 <input class="common_button" type="submit" value="カート" > 96 97 98 </form> 99 <form action="./ShoppingServlet1"> 100 <input class="common_button" type="submit" value="次へ"> 101 </form> 102 </body> 103</html>

Servlet

Java

1public void doGet (HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 HttpSession session = request.getSession(); // セッション 5 request.setCharacterEncoding("UTF-8"); 6 RequestDispatcher dispatcher; 7 8 //パラメータ取得 9 String purchase = request.getParameter("param1"); 10 String itemId = request.getParameter("param2"); 11 12 Shopping shopping = new Shopping(); 13 ArrayList<CartBean> beanList = shopping.getCartItem(purchase, itemId); 14 15 session.setAttribute("cartItem", beanList); 16 17 dispatcher = request.getRequestDispatcher("./cart.jsp"); 18 dispatcher.forward(request, response); 19 20 }

カートJSP

java

1<%@ page import="java.util.ArrayList"%> 2<%@ page language="java" contentType="text/html; charset=UTF-8" %> 3<%@ page import="bean.CartBean"%> 4<jsp:useBean id="user_db" scope="session" class="bean.LoginUserBean" /> 5 6 7<%-- カート画面 --%> 8<!DOCTYPE html> 9<html> 10 <head> 11 <title>ECサイト</title> 12 <link href="/ecsite/css/shopping.css" rel="stylesheet" type="text/css" /> 13 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 14 </head> 15 <body> 16 <jsp:include page="header.jsp"/> 17 18<% ArrayList<CartBean> beanList = (ArrayList<CartBean>)session.getAttribute("cartItem"); %> 19 20 <form action="./ResultServlet" method="post"> 21 <table class="table_list"> 22 <tbody> 23 <tr> 24 <!-- <th>商品ID</th>--> 25 <th>商品画像</th> 26 <th>商品名</th> 27 <th>価格</th> 28 <th>購入数</th> 29 </tr> 30 <% for(CartBean bean : beanList) { %> 31 32 <tr> 33 <%-- 商品画像 --%> 34 <td><img src="<%= bean.getItemImage() %>" width="100" height="auto"></td> 35 <%-- 商品名 --%> 36 <td><%= bean.getItemName() %></td> 37 <%-- 価格 --%> 38 <td><%= bean.getPrice() %></td> 39 <%-- 購入数 --%> 40 <td><%= bean.getPurchase() %></td> 41 </tr> 42 <% } %> 43 </tbody> 44 </table> 45 </form> 46 </body> 47</html>

現在、勉強でショッピングカートを作っています。
流れなんですが、商品一覧画面があって、個数をセレクタで選べるようにしていて、その値をAjaxで取得して、サーブレットに送り、セッションに保存してカートの画面をJSPで表示する、を実現したいです。
サーブレット上では、値は取得できているのですが、どうもうまくJSP上では、空になっておる、渡せません。

どこが違うのか、ヒントだけでもいただけたらありがたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそもsession自体がjspに宣言されていないからではないでしょうか。

JSPにも下記を書けば良いかと。

java

1HttpSession session = request.getSession(true);

投稿2018/06/28 07:15

m.ts10806

総合スコア80765

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

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

akamarukun

2018/06/28 07:21

暗黙オブジェクトで、宣言せずに使用できるはずです。
m.ts10806

2018/06/28 07:25

まず書いてみてから言ってください。 あくまで懸念です。
akamarukun

2018/06/28 07:33

失礼しました。 試してからコメントしたんですが、書き方が悪かったです。
m.ts10806

2018/06/28 08:21

そもそもですが、提示のサーブレットソースは/ecsite/ajaxitemですよね? Ajaxはあくまで非同期でサーバープログラムを実行するものなので、Ajaxで呼び出されたプログラムに直にdispatcher.forward()書いても意味がないように思います。 実行元のsuccess  に返ってきているだけのはずです。 例えばサーブレット側では取得した情報をJSON形式などにして返して、successで受け取ったdataをJavaScriptで整形してHTMLに還元する ような使い方が本来だと思います。
akamarukun

2018/06/29 01:30

解決いたしました。 > Ajaxで呼び出されたプログラムに直にdispatcher.forward()書いても意味がないように思います。 を基に、jspを呼び出すプログラムを別のサーブレットに任せたら、値渡せました。 ありがとうございました。
m.ts10806

2018/06/29 01:31

解決できたようで何よりです。Ajaxで呼び出すプログラムは画面を出力するわけではなくAPIとして結果を返すように作るものなので、念頭に入れておく必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問