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

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

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

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

Java

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

サーブレット

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

44381閲覧

リストに入ったオブジェクトをJSPに渡し、JSTLで表示させたい

nissanngtr34

総合スコア24

JSP

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

Java

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

サーブレット

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2015/09/08 07:46

編集2015/09/09 07:20

ソースすべてです。
☆Sample01.java------------------------------------------------

package sample.pg;

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;

/**

  • Servlet implementation class Sample01

*/
@WebServlet("/Sample01")

public class Sample01 extends HttpServlet {
private static final long serialVersionUID = 1L;

/** * @see HttpServlet#HttpServlet() */ public Sample01() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); GetUser gu1 = new GetUser(); GetUser gu2 = new GetUser(); GetUser gu3 = new GetUser(); gu1.setId("yamada"); gu1.setPass("pas1"); gu1.setName("山田"); gu1.setSex("men"); gu2.setId("suzuki"); gu2.setPass("pas2"); gu2.setName("鈴木"); gu2.setSex("men"); gu3.setId("tanaka"); gu3.setPass("pas3"); gu3.setName("田中"); gu3.setSex("men"); List list = new ArrayList(); list.add(gu1); list.add(gu2); list.add(gu3); request.setAttribute("list",list); RequestDispatcher dispatcher = request.getRequestDispatcher("/sample_get1.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); }

}

☆GetUser.java------------------------------------------------
package sample.pg;

class GetUser{
private String id;
private String pass;
private String name;
private String sex;

public String getId(){ return this.id; } public String getPass(){ return this.pass; } public String getName(){ return this.name; } public String getSex(){ return this.sex; } public void setId(String id){ this.id=id; } public void setPass(String pass){ this.pass=pass; } public void setName(String name){ this.name=name; } public void setSex(String sex){ this.sex=sex; }

}

☆sample_get1.jsp------------------------------------------

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html"> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <table border="1"> <tr> <c:forEach var="item" items="${requestScope['list']}"> <td>${item.getId()} </td> </c:forEach> </tr> </table> </body> </html>

各ユーザー(gu○)のインスタンスを作り、それを各リストに入れました。
中身はID,PASS,NAMEのフィールドになっています。

これを最終的にJSP側に飛ばし、リストをすべてテーブルタグの間にループさせて表示させたいですがうまくいきません。

もしかしてJSP側でJAVAで作ったクラスを読み込ませる処理が必要だったりするのでしょうか?
JSP側でインスタンスをする処理が必要になってくるのでしょうか?
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

下記ですが、

  1. 生Servletのサンプルコード
  2. JSP(+JSTL)のサンプルコード
  3. 実行結果

です。

Java

1package systems.charm.sample1; 2 3import java.io.IOException; 4import java.io.Serializable; 5import java.util.ArrayList; 6import java.util.List; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14 15/** 16 * サンプルサーブレット 17 */ 18@WebServlet("/sample") 19public class SampleServlet extends HttpServlet 20{ 21 private static final long serialVersionUID = 1L; 22 23 /** 24 * <p> 25 * ユーザ情報DTO 26 * </p> 27 * 本来はinner-classではなく別クラス(サンプルなので) 28 */ 29 public class User implements Serializable 30 { 31 private static final long serialVersionUID = 1L; 32 /** ユーザ名 */ 33 private String name; 34 /** パスワード */ 35 private String pass; 36 37 /** 38 * コンストラクタ 39 * 40 * @param name 41 * ユーザ名 42 * @param pass 43 * パスワード 44 */ 45 public User(String name, String pass) 46 { 47 this.name = name; 48 this.pass = pass; 49 } 50 51 // ---- setter/getter ----- 52 public String getName() 53 { 54 return this.name; 55 } 56 public void setName(String name) 57 { 58 this.name = name; 59 } 60 public String getPass() 61 { 62 return this.pass; 63 } 64 public void setPass(String pass) 65 { 66 this.pass = pass; 67 } 68 } 69 70 /** 71 * <p> 72 * GETメソッド呼び出し 73 * </p> 74 * 本来は上流でまとめる(サンプルなので) 75 */ 76 protected void doGet(HttpServletRequest request, HttpServletResponse response) 77 throws ServletException, IOException 78 { 79 List<User> users = new ArrayList<SampleServlet.User>(); 80 users.add(new User("yamada", "pass1")); 81 users.add(new User("suzuki", "pass2")); 82 83 request.setAttribute("list", users); 84 85 RequestDispatcher dispatcher = request 86 .getRequestDispatcher("/sample_get1.jsp"); 87 dispatcher.forward(request, response); 88 } 89}

JSP

1<%@ page contentType="text/html;charset=UTF-8"%> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 4 5<!DOCTYPE html"> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>サンプルページ</title> 10</head> 11<body> 12 <table border="1"> 13 <thead> 14 <tr> 15 <th>username</th> 16 <th>password</th> 17 </tr> 18 </thead> 19 <tbody> 20 <c:forEach items="${list}" var="item"> 21 <tr> 22 <td><c:out value="${item.name}" /></td> 23 <td><c:out value="${item.pass}" /></td> 24 </tr> 25 </c:forEach> 26 </tbody> 27 </table> 28</body> 29</html>

実行結果

投稿2015/09/09 11:33

CharmSystems

総合スコア241

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

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

nissanngtr34

2015/09/10 03:45

ありがとうございます。助かりました。
guest

0

<td>${item.getId()} </td> でいけませんか?

投稿2015/09/08 08:36

anonymouskawa

総合スコア856

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

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

nissanngtr34

2015/09/08 08:43

これでは出ませんでした。 例外やエラーばかり表示されてしまいます。 何が原因なのかずっと考えています。 もしかしてjsp側でクラスをインポートしないといけないのだろうかなど考えたりと。
anonymouskawa

2015/09/08 08:44

その例外やエラーを教えていただけますか?
nissanngtr34

2015/09/08 13:40

遅くなりすみません。今その環境を再現出来なく。明日朝にまた試してみてこちらに貼ります。
nissanngtr34

2015/09/09 00:28

遅くなりました。よろしくお願いします。このような例外が出ます。 type 例外レポート メッセージ java.lang.ClassNotFoundException: org.apache.jsp.sample_005fget1_jsp 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.sample_005fget1_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:177) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:376) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) sample.pg.Sample01.doGet(Sample01.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.ClassNotFoundException: org.apache.jsp.sample_005fget1_jsp java.net.URLClassLoader.findClass(URLClassLoader.java:381) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:376) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) sample.pg.Sample01.doGet(Sample01.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
anonymouskawa

2015/09/09 01:33

あ、本当ですね。 jsp:useBeanを追加してみてください。
nissanngtr34

2015/09/09 02:33 編集

<jsp:useBean id="list" scope="application" class="java.util.List" /> このような感じで使うのでしょうか? ×と表示されてしまいまして。 型LISTのインスタンスを生成できません List は raw 型です。総称型 List<E> への参照は、パラメーター化する必要があります。
nissanngtr34

2015/09/09 07:24 編集

ソースを質問のところに書き加えました。 現在例外では以下のものが出ています。 16行目は <td>${item.getId()} </td> の部分でして。 メッセージ An exception occurred processing JSP page /sample_get1.jsp at line 16 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: An exception occurred processing JSP page /sample_get1.jsp at line 16 よろしくお願い致します。
CharmSystems

2015/09/09 11:36

そもそも下記では動作しませんし、Syntaxが間違えています。 <td>${item.getId()} </td> JavaBean仕様のアクセッサになるので <td>${item.id}</td> になります。
nissanngtr34

2015/09/10 03:47

ありがとうございます。 間違えていました。修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問