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

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

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

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

Q&A

解決済

1回答

14633閲覧

繰り返しforEachでテーブルを作成したいです。

sususu

総合スコア99

Java

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

1グッド

0クリップ

投稿2018/03/05 10:26

編集2018/03/05 11:11

リストに要素を入れていき、繰り返し処理でテーブルに表示していきたいですが作り方がわかりません。
どなたかご教授お願いいたします。
作製したいのは下記のようなGUIでイメージとしては例えばメルカリで新しい商品を登録すると「画像」(アルファベット)と「説明欄」(番号)で一組として一番上に出てくる感じです。
イメージ説明
forEach,break,ifを使用するのかと思ったのですがうまく組めませんでした。

テーブルの部分を記述していただけるととても助かります。
どなたかご回答よろしくお願いいたします。

サーブレットは下記のようなものを書きました

package Table; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class Table */ @WebServlet("/Table") public class Table extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); list.add("f"); List<String> num = new ArrayList<String>(); num.add("1"); num.add("2"); num.add("3"); num.add("4"); num.add("5"); num.add("6"); HttpSession session = request.getSession(); session.setAttribute("list",list); session.setAttribute("num", num); RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/table.jsp"); dispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

開発環境
OS windows10
エディション enterprise
言語 java8.0.1310.11
MariaDB10.1
HeidiSQL
eclipse NEON

このテーブルを繰り返しで作製したく思っています <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/table.css"> <title>Insert title here</title> </head> <body> tablePage <table><!-- --> <tr> <td> <table> <tr> <td>A</td> </tr> <tr> <tr> <td>1</td> </tr> </table> </td> <td> <table> <tr> <td>B</td> </tr> <tr> <tr> <td>2</td> </tr> </table> </td> </tr> </table><!-- --> <table><!-- --> <tr> <td> <table> <tr> <td>C</td> </tr> <tr> <tr> <td>3</td> </tr> </table> </td> <td> <table> <tr> <td>D</td> </tr> <tr> <tr> <td>4</td> </tr> </table> </td> </tr> </table><!-- --> <table><!-- --> <tr> <td> <table> <tr> <td>E</td> </tr> <tr> <tr> <td>5</td> </tr> </table> </td> <td> <table> <tr> <td>F</td> </tr> <tr> <tr> <td>6</td> </tr> </table> </td> </tr> </table><!-- --> </body> </html>
A-pZ👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/03/05 11:01

あなたかがやって駄目だったJSPもあげてくださいね
sususu

2018/03/05 11:09

すいません、それは全然形にならないまま何回もいじくりまわしたもので消してしまったので、いま繰り返しなしで作ったものをアップいたします。
guest

回答1

0

ベストアンサー

ライブラリ等を使わない書き方で書いてみました。

  • セッションを使う必要はないので request に値を用意しています。
  • jspは直接アクセスできない場所に置いた方がいいのでWEB-INF以下に置いています。
  • 配列の要素数が奇数でもエラーが出ないように Math.min(i2, i + 2) を入れています。
  • HTMLエスケープ処理は入れてませんので必要なら<%= list.get(j) %>の部分で<c:out>等を使用してください。

[Table.java]

java

1import java.io.IOException; 2import java.util.Arrays; 3 4import javax.servlet.ServletException; 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10@SuppressWarnings("serial") 11@WebServlet("/Table") 12public class Table extends HttpServlet { 13 14 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 15 request.setAttribute("list", Arrays.asList("a", "b", "c", "d", "e", "f")); 16 request.setAttribute("num", Arrays.asList(1, 2, 3, 4, 5, 6)); 17 request.getRequestDispatcher("/WEB-INF/table.jsp").forward(request, response); 18 } 19 20 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 21 doGet(request, response); 22 } 23} 24

[/WEB-INF/table.jsp]

html

1<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" import="java.util.List" %><html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<link rel="stylesheet" type="text/css" href="css/table.css"> 5<title>Insert title here</title> 6</head> 7<body> 8 tablePage 9<% 10List<String> list = (List<String>)request.getAttribute("list"); 11List<Integer> num = (List<Integer>)request.getAttribute("num"); 12for(int i = 0, i2 = list.size(); i < i2; i += 2) { 13%> 14 <table> 15 <tr> 16<% 17 for(int j = i, j2 = Math.min(i2, i + 2); j < j2; j++) { 18%> 19 <td> 20 <table> 21 <tr> 22 <td><%= list.get(j) %></td> 23 </tr> 24 <tr> 25 <tr> 26 <td><%= num.get(j) %></td> 27 </tr> 28 </table> 29 </td> 30<% 31 } 32%> 33 </tr> 34 </table> 35<% 36} 37%> 38</body> 39</html> 40

投稿2018/03/06 04:05

nakazawaken1

総合スコア94

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

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

sususu

2018/03/06 09:47

すごいです!ズバリやりたかった事です!ありがとうございました! また、サーブレットの記述も綺麗で補足も知らないことがあってとても勉強になりました! asListやfor文の中の記述などまだわからないところがあるので調べてみたいと思います! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問