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

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

ただいまの
回答率

90.49%

  • Java

    14060questions

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

  • Eclipse

    1703questions

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

  • JSP

    943questions

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

  • サーブレット

    118questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 11K+

nissanngtr34

score 16

ソースすべてです。
☆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側でインスタンスをする処理が必要になってくるのでしょうか?
よろしくお願い致します。


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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

下記ですが、
1) 生Servletのサンプルコード
2) JSP(+JSTL)のサンプルコード
3) 実行結果
です。

package systems.charm.sample1;

import java.io.IOException;
import java.io.Serializable;
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;

/**
 * サンプルサーブレット
 */
@WebServlet("/sample")
public class SampleServlet extends HttpServlet
{
  private static final long serialVersionUID = 1L;

  /**
   * <p>
   * ユーザ情報DTO
   * </p>
   * 本来はinner-classではなく別クラス(サンプルなので)
   */
  public class User implements Serializable
  {
    private static final long serialVersionUID = 1L;
    /** ユーザ名 */
    private String            name;
    /** パスワード */
    private String            pass;

    /**
     * コンストラクタ
     * 
     * @param name
     *          ユーザ名
     * @param pass
     *          パスワード
     */
    public User(String name, String pass)
    {
      this.name = name;
      this.pass = pass;
    }

    // ---- setter/getter -----
    public String getName()
    {
      return this.name;
    }
    public void setName(String name)
    {
      this.name = name;
    }
    public String getPass()
    {
      return this.pass;
    }
    public void setPass(String pass)
    {
      this.pass = pass;
    }
  }

  /**
   * <p>
   * GETメソッド呼び出し
   * </p>
   * 本来は上流でまとめる(サンプルなので)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
  {
    List<User> users = new ArrayList<SampleServlet.User>();
    users.add(new User("yamada", "pass1"));
    users.add(new User("suzuki", "pass2"));

    request.setAttribute("list", users);

    RequestDispatcher dispatcher = request
        .getRequestDispatcher("/sample_get1.jsp");
    dispatcher.forward(request, response);
  }
}

<%@ 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>サンプルページ</title>
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>username</th>
                <th>password</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach items="${list}" var="item">
                <tr>
                    <td><c:out value="${item.name}" /></td>
                    <td><c:out value="${item.pass}" /></td>
                </tr>
            </c:forEach>
        </tbody>
    </table>
</body>
</html>

実行結果

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/10 12:45

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/08 17:43

    これでは出ませんでした。
    例外やエラーばかり表示されてしまいます。

    何が原因なのかずっと考えています。
    もしかしてjsp側でクラスをインポートしないといけないのだろうかなど考えたりと。

    キャンセル

  • 2015/09/08 17:44

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

    キャンセル

  • 2015/09/08 22:40

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

    キャンセル

  • 2015/09/09 09: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)

    キャンセル

  • 2015/09/09 10:33

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

    キャンセル

  • 2015/09/09 10:45

    jsp:useBeanを調べたところ、こちらが出てきたので試してみます。
    http://struts.wasureppoi.com/jsp/06_useBean.html

    キャンセル

  • 2015/09/09 11:30 編集

    <jsp:useBean id="list" scope="application" class="java.util.List" />
    このような感じで使うのでしょうか?

    ×と表示されてしまいまして。
    型LISTのインスタンスを生成できません
    List は raw 型です。総称型 List<E> への参照は、パラメーター化する必要があります。

    キャンセル

  • 2015/09/09 12:26 編集

    ソースを質問のところに書き加えました。
    現在例外では以下のものが出ています。
    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
    よろしくお願い致します。

    キャンセル

  • 2015/09/09 20:36

    そもそも下記では動作しませんし、Syntaxが間違えています。
    <td>${item.getId()} </td>

    JavaBean仕様のアクセッサになるので <td>${item.id}</td> になります。

    キャンセル

  • 2015/09/10 12:47

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Java

    14060questions

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

  • Eclipse

    1703questions

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

  • JSP

    943questions

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

  • サーブレット

    118questions

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