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

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

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

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

Java

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

servlet

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

Q&A

解決済

2回答

7161閲覧

ArrayListを使用した掲示板

Kyouko_kisaragi

総合スコア48

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2016/10/03 11:19

編集2016/10/03 11:32

現在、servletとjspを組み合わせて小説投稿掲示板を作成しています。
jspで設定した4つのテキストボックスから値を入力し、servletに投げてArrayListで処理を行い、値を保存して表示させる処理をしようとしています。

入力値は
・名前
・投稿者名
・記事番号
・内容
の4つです。

私がしたいのは、
・ボタン押下時に上から『名前』『投稿者名』『記事番号』『内容』がひとまとまりになって表示されること(普通の掲示板で投稿ボタンを押した時と同じになってほしいということです)
・それぞれの値の上に、『名前』『投稿者名』『記事番号』『内容』という文字が表示されること

現在の状態では、普通の掲示板に投稿した時と同じように表示されます。
しかし、値をひとまとめにしているため、各内容の説明を入れることができません。

ひとまとめにしていても、別々に説明を入れる方法はあるのでしょうか。
それがだめなら、どうしたら上記の入力値のような順番で表示できるのでしょうか。

以下にソースを一部掲載します。

java

//doPost内 // sessionの宣言 HttpSession session = req.getSession(); // jspから入力値を取得 String ObjNo = req.getParameter("objno"); String ObjName = req.getParameter("name"); String level = req.getParameter("level"); String novel = req.getParameter("novel"); // データの取り出し ArrayList<String> arrayOldData = (ArrayList<String>) session .getAttribute("oldData"); if (arrayOldData == null) { arrayOldData = new ArrayList<String>(); } // 入力データの追加 if (ObjNo != null) { arrayOldData.add(ObjNo); // データの保存 session.setAttribute("oldData", arrayOldData); } ArrayList<String> arrayname = (ArrayList<String>) session .getAttribute("oldName"); if (arrayname == null) { arrayname = new ArrayList<String>(); } if (ObjName != null) { arrayname.add(ObjName); session.setAttribute("oldName", arrayname); } ArrayList<String> arraylevel = (ArrayList<String>) session .getAttribute("oldLevel"); if (arraylevel == null) { arraylevel = new ArrayList<String>(); } if (level != null) { arraylevel.add(level); session.setAttribute("oldLevel", arraylevel); } ArrayList<String> arrayNovel = (ArrayList<String>) session .getAttribute("oldNovel"); if (arrayNovel == null) { arrayNovel = new ArrayList<String>(); } if (novel != null) { arrayNovel.add(novel); session.setAttribute("oldNovel", arrayNovel); } ArrayList<String> Group = new ArrayList<String>(); Group.addAll(arrayOldData); Group.addAll(arrayname); Group.addAll(arraylevel); Group.addAll(arrayNovel); session.setAttribute("Group", Group);

jsp

// 省略 <body> <form name="frm" action="http://localhost:8080/WebTest2/Test2" method="POST"> <h2>投稿画面</h2> Object No:<br> <br> <input type="text" name="objno" size=20 maxlength=5> <br> <br> Object Name: <br> <br> <input type="text" name="name"> <br> <br> Object Level:<br> <br> <select name="level"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select><br> <br> Object Value:<br> <br> <textarea name="novel" rows="30" cols="80"></textarea><br> <br> <input type="submit" style="width: 120px; height: 30px;" value="投稿する"><input type="submit" style="width: 120px; height: 30px;" value="削除する"> <input type="button" onclick="location.href='setumei.jsp'" style="width: 120px; height: 30px;" value="掲示板について"></form> <hr> <% ArrayList<String> arrayData = (ArrayList<String>) session .getAttribute("Group"); if (arrayData != null) { for (String s : arrayData) { out.println("Object No:<br><br>"); out.println(s + "<br><br>"); } } %> </body> </html>

よろしくお願いします。

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

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

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

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

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

A-pZ

2016/10/03 11:21

問題点や疑問点は何なのかを書くと回答が得られるかもしれません。
guest

回答2

0

ベストアンサー

java

1String ObjNo = req.getParameter("objno"); 2String ObjName = req.getParameter("name"); 3String level = req.getParameter("level"); 4String novel = req.getParameter("novel");

で受け取った内容を、別のクラスに格納してJSPではこのインスタンスを出力すると良いでしょう。
例えば名前を ArrayData としますが、次のようになります。

java

1public class ArrayData { 2 String objNo; 3 String objName; 4 String level; 5 String novel 6 7 public String getObjNo() { 8 return objNo; 9 } 10 11 public void setObjNo(String objNo) { 12 this.objNo = objNo; 13 } 14 15 ..... 以下同様 16}

これが複数行文格納されているので、List<ArrayData>の内容でJSPに渡しておき、

html

1<% 2 ArrayList<ArrayData> arrayDataList = (ArrayList<ArrayData>) session.getAttribute("Group"); 3 4 for (ArrayData data : arrayDataList) { 5%> 6<%-- 見た目の整形は行ってください。テーブル形式や区切り文字など --%> 7 ${ data.objNo } 8 ${ data.name } 9 ${ data.level } 10 ${ data.novel } 11<% 12 } 13%>

投稿2016/10/04 04:26

A-pZ

総合スコア12011

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

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

Kyouko_kisaragi

2016/10/04 12:10

アドバイスありがとうございます。 もう一つ質問をよろしいでしょうか。 String ObjNo = req.getParameter("objno"); ここで取得した値は、このままだと使用されていないようなのですが、 以下のような書き方でいいのでしょうか。 List<ArrayData> array = new ArrayList<ArrayData>(); ArrayData Group = new ArrayData(); Group.setObjNo(1); Group.setObjName(ObjName); Group.setLevel(1); Group.setNovel(novel); // 入力値を追加 array.add(Group); session.setAttribute("Group", Group);
A-pZ

2016/10/04 15:12

String ObjNo = req.getParameter("objno"); で取得した値をGroupに入れてあげてください。 Group.setObjNo(ObjNo); ですね。それ以外の記述については特に問題はないようです。
Kyouko_kisaragi

2016/10/05 12:05

アドバイスありがとうございました!
guest

0

簡単に解決する方法としては投稿データを表すクラスを作り、それをListに追加していけばいいかと思われます。

つまり

java

1class Post { 2 private int objNo; 3 private String name; 4 private int level; 5 private String novel; 6 7 // getter, setter 省略 8}

このようなクラスを作り、投稿ごとにオブジェクトを作成

java

1List<Post> posts = new ArrayList<>(); 2Post post = new Post(); 3post.setObjNo(1); 4... 5 6posts.add(post);

リストに追加

jspの方には

jsp

1<% 2 for (Post post : posts) { 3 out.println("ObjNo:"); 4 out.println(post.getObjNo()); 5 out.println("<br /><br />"); 6 out.println("Name:"); 7 out.println(post.getName()); 8 out.println("<br /><br />"); 9 ... 10 } 11%>

のようにすればいいと思います。
将来的なことも考えてデータベースへの永続化も検討したほうがいいでしょう。

投稿2016/10/03 14:16

編集2016/10/03 14:17
jimyo

総合スコア243

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問