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

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

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

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

servlet

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

1回答

4507閲覧

getParameterをArrayListに格納したいです。

chachachamaru

総合スコア4

JSP

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

servlet

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2020/04/30 12:14

編集2020/04/30 13:21

前提・実現したいこと

入力フォームに登録情報(名前・価格・仮おきかどうか)を登録し、それを表示するシステムを制作しています。

そこで入力フォームで受け取ったgetParameterをArrayListに格納し、セッションスコープに乗せて、jspで表示したいです。

getParameterをArrayListに格納する方法がわからず、自力で下記コードを書いたところ実行されず困っています。ご教授お願いいたします。

javaを学び始めて一か月も経ってない超初心者なので、具体的に教えていただけると嬉しいです。

コードはサーブレットdoPost部分とbeanのjavaファイル、jspファイルです。

該当のソースコード

サーブレットdoPost部分

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name=request.getParameter("name"); String money=request.getParameter("money"); String kari=request.getParameter("kari"); Handmaidbeans hm = new Handmaidbeans(); hm.setName(name); hm.setMoney(money); hm.setKari(kari); ArrayList<Handmaidbeans> list = new ArrayList<Handmaidbeans>(); list.add(hm); HttpSession session = request.getSession(); session.setAttribute("商品情報", list); RequestDispatcher rd = request.getRequestDispatcher("add.jsp"); rd.forward(request, response); }

package beans;

import java.io.Serializable;

public class Handmaidbeans implements Serializable{

private String name; private String money; private String kari; public Handmaidbeans() { } public Handmaidbeans(String name, String money, String kari) { this.setName(name); this.setMoney(money); this.setKari(kari); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMoney() { return money; } public void setMoney(String money) { this.money = money; } public String getKari() { return kari; } public void setKari(String kari) { this.kari = kari; }

}


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="beans.Handmaidbeans" %>
<% Handmaidbeans hm =(Handmaidbeans) session.getAttribute("商品情報");%>

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>商品追加</title> </head> <body> <table> <caption>登録しました</caption> <tr> <th>名前</th> <td><%= hm.getName()%></td> </tr>
<tr> <th>価格</th> <td><%= hm.getMoney()%></td> </tr> <tr> <th>仮</th> <td><%= hm.getKari()%></td> </tr> </table> <a href="http://localhost:8080/Handmaid/Handmaid.html">戻る</a>
</body></html>

表示されているエラー

タイプ 例外報告

メッセージ [/add.jsp] の処理中に行番号 [4] で例外が発生しました。

説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

例外
org.apache.jasper.JasperException: [/add.jsp] の処理中に行番号 [4] で例外が発生しました。

1: <%@ page language="java" contentType="text/html; charset=UTF-8"
2: pageEncoding="UTF-8"%>
3: <%@ page import="beans.Handmaidbeans" %>
4: <% Handmaidbeans hm =(Handmaidbeans) session.getAttribute("商品情報");%>
5:
6: <!DOCTYPE html>
7: <html>

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:626)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:515)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Survlet.addSurvlet.doPost(addSurvlet.java:62)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

根本原因
java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class beans.Handmaidbeans (java.util.ArrayList is in module java.base of loader 'bootstrap'; beans.Handmaidbeans is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @165b2f7f)
org.apache.jsp.add_jsp._jspService(add_jsp.java:121)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Survlet.addSurvlet.doPost(addSurvlet.java:62)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

注意 原因のすべてのスタックトレースは、サーバのログに記録されています

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

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

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

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

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

KoichiSugiyama

2020/04/30 13:11

実行されない、というのはjspに表示されないという認識でよいでしょうか?だとしたら表示するjspの内容も提示してもらった方がアドバイスが集まりやすいと思います。
chachachamaru

2020/04/30 13:22

質問へのアドバイスありがとうございます。質問すること自体がはじめてでしたのでご指摘いただけて有難いです。早速反映させていただきました。
guest

回答1

0

ベストアンサー

例外が発生している原因はエラーメッセージにもありますが

java

1Handmaidbeans hm = new Handmaidbeans(); 2hm.setName(name); 3hm.setMoney(money); 4hm.setKari(kari); 5 6ArrayList<Handmaidbeans> list = new ArrayList<Handmaidbeans>(); 7list.add(hm); 8 9HttpSession session = request.getSession(); 10session.setAttribute("商品情報", list); 11

とHadmaidbeansのArrayListとしてsessionにデータを保持していますが、取り出すjsp側で

jsp

1<%@ page import="beans.Handmaidbeans" %> 2<% Handmaidbeans hm =(Handmaidbeans) session.getAttribute("商品情報");%>

として、Handmaidbeansにキャストしようとしている為です。

jsp

1<%@ page import="beans.Handmaidbeans" %> 2<% ArrayList<Handmaidbeans> hmList = (ArrayList<Handmaidbeans>)session.getAttribute("商品情報");%>

として取り出せばうまくいくと思います。

投稿2020/04/30 17:11

KoichiSugiyama

総合スコア3041

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

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

chachachamaru

2020/05/01 04:46

ご回答ありがとうございます。型を合わせなければいけないのですね。助かりました。やってみます、敏速に対応してくださりありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問