• ベストアンサー

JSPでのページ切り替え

こんにちわ。 非常に単純な質問で申し訳ありません。 WEBアプリケーションでDBから取得した値(ArrayList型)をJSPで受け取り、1ページに20件ずつ表示したいのですが、次ページへのリンクを行う際に、アプリケーションクラスにArrayList型のデータを渡したりできるのでしょうか? それぞれをString型のデータにしないと取得できませんか? ご回答よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.3

他の方のご意見にもあるとおりsessionを使えばオブジェクトを持ちまわることは可能です。 ので別の方法もご提案。 今現在のページ数を覚えておき、 アクセスされるたびに次のページに必要な分だけの 情報をDBからとってくるというのはどうでしょうか? 上記の情報から(だけ)で判断すると ページ情報が何万ページとなった場合でも 一度にそのページ分の情報をArrayListにつっこんで もちまわるのかなぁと思いました。 必要なときに必要な分だけとってくるっていう 方法も検討されてはいかがでしょうか?

その他の回答 (2)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

もしPCクライアントを想定しているのであれば sessionに対してsetAttributeを行えば良いのではないですか?

  • dayowl
  • ベストアンサー率56% (84/148)
回答No.1

一応「できる」と回答して差し支えなさそうな感じなのですが、 ちょっとよくわからなかったもので、補足説明をお願いします。 「次ページへのリンクを行う際に、アプリケーションクラスにArrayList型を渡す」 というのは、具体的にはどういったコーディングで実現しようと思っておられますか?

ynys45
質問者

補足

ページ切り替えの時に、 URLを指定して、まずアクションクラスにリンクさせ、 そのアクションクラスから、再度JSPに値を渡して表示させようと思ってます。 具体的には、 *********************************** a.jsp <% ArrayList list = request.getParameter("List"); %> <a href="c:\xx\\yy\\zz\\test?DataList=<%= list %>">リンク先にジャンプ</a> として test.java ArrayList list = request.getAttribute("DataList"); request.setAttribute("List",list); ******************************** といった感じです。 補足になったでしょうか? もうしわけありませんが、よろしくお願いします。

関連するQ&A

  • JSP+Servletでのページングの常識

    JSP+Servletでのページングの実装方法について伺いたいと思い、 質問いたしました。 現在JSP+ServletでWebページを製作しておりますが、 ページングを行うデータの取得方法で悩んでおります。 データをDBから取得する際は、下記1と2のどちらが標準的な実装方法なのでしょうか??? 条件としては、レコード件数2000件のテーブルからデータを取得し、1ページ10件ずつ表示します。 また、APサーバとDBサーバの通信がボトルネックになることはない場合でお願いします 1.全件を最初に取得しておいて、ページ切り替えの際は、DB接続なしで表示する 2.ページに表示する件数分のみDBから取得し、ページ切り替えの際は、毎回必要な件数分取得する 1の方法ですと、常に全件をキャッシュしていることになり、パフォーマンスが心配です。 2の方法ですと、ページ制御が煩雑になりそうな気がします。

    • ベストアンサー
    • Java
  • JSPでのリストボックス表示

    いつもお世話になっております。 サーブレット&JSPでプログラミングの勉強をしています。 JSPでリストボックスを表示させる際に、リストのアイテムをハードコーディングではなく、DBから取得したデータをArrayList等に格納し、表示させたいと思っています。 この場合、ループでArrayListのアイテムを1件ずつ取り出して、JSP内の<select><option></option></select>に当て込む方法が良いのでしょうか? ちなみに以下のテーブル内容で、リストボックスには“作業内容”を表示させて、選択されたときには、“作業コード”を取得させたいのですが、どのようにすれば良いでしょうか? テーブル -------------------- 作業コード|作業内容 -------------------- 0000000001|プログラミング 0000000002|実装 0000000003|テスト よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVA・JSP間のデータの受け渡し

    質問が下手なので文章にせず箇条書きにして質問させてもらいます。 完成させたいもの:勤怠登録 環境:  MySQL Tomcat WindowsXP ツール  Exlipse 大まかな流れ---------------------------------------------- ・JSP(HTMLでも可)のログイン画面  (1)、「Id」と「Pass」の入力が行える ↓ Id・Passを渡す ・Javaのログイン認証クラス  (1)、取得した「Id」「Pass」でDB内を検索、結果を返す  (2)、(1)で登録がある場合はDB内の該当データ(勤怠情報)を取得 ↓ (2)で取得したデータを渡す ・JSP勤怠情報閲覧画面 ---------------------------------------------------------- ・現在、悩んでいる点  Javaのログイン認証クラスの(2)で取得した値を  勤怠登録閲覧画面(JSP)に渡してやりたいのですが  方法がわかりません。  JSP→JAVA は「post」  JAVA→JSP が判らないのです 取得した勤怠データは構造体(C言語的な表現ですが)に入いれた後、 ArrayListで作った変数に追加していきました。 補足:  勤怠データ構造体(クラス)の内容{    date 日付    time 出勤時間    time 退勤時間  } 以上です まだ初めて3ヶ月ほどの初心者ゆえ 説明不足な点があると思いますがお教え願えないでしょうか。

  • java strust 動的にDBのデータをJSP画面で表示する 方法

    --エラー内容 致命的: サーブレット action のServlet.service()が例外を投げました javax.servlet.jsp.JspException: Bean array のプロパティ dBBookTitle に対するゲッターメソッドがありません --JSPソース-- <logic:notEmpty property="bookId" name="RETURNSCREEN"> <logic:iterate id="array" name="RETURNSCREEN" property="bookId" > <bean:write name="array" property="dBBookId"/> </logic:iterate> </logic:notEmpty> --Javaアクション-- ReturnScreenForm rsf = ( ReturnScreenForm ) form ; ReturnScreenFormDB rsfd = new ReturnScreenFormDB( ) ; // = ( ReturnScreenFormDB ) form ; //ArrayListクラスは大きさが決まっていない配列となる,その為動的にオブジェクト配列を宣言できる ArrayList<ReturnScreenFormDB> array = new ArrayList<ReturnScreenFormDB>( ) ; //DB接続処理の呼び出し DatabaseAccess.Open( ); rs = DatabaseAccess.executeQueryMethod( SQL_CODE ) ; String stmember_id ; //DBデータ(member_id )取得して格納する受け皿 String ststatus ; //DBデータ(status )を取得して格納する受け皿 String stbook_id ; //DBデータ(book_id )を取得して格納する受け皿 String stbook_title ; //DBデータ(book_title )を取得して格納する受け皿 int flg_Retrieval = 0 ; int CountNo = 0; //検索された行数文ループ while( rs.next( ) ) { flg_Retrieval = 1 ; stmember_id = rs.getString("member_id"); //DBのmember_idを格納 ststatus = rs.getString("status"); //DBのmember_idを格納 stbook_id = rs.getString("book_id"); //DBのmember_family_nameを格納 stbook_title = rs.getString("book_title"); //DBのmember_family_name_kanaを格納 //セッターに取得データをセットする rsfd.setDBBookId( stbook_id ) ; rsfd.setDBBookTitle( stbook_title) ; array.add( rsfd ); rsf.setBookId( array ); } //END while( rs.next( ) ) --JSP画面Bean-- private String memberId; // ="0003"; //会員ID private ArrayList<ReturnScreenFormDB> bookId; // ="0041"; //本ID private ArrayList<ReturnScreenForm> bookTitle; // = "御徒町"; //本タイトル //セット本ID public void setBookId( ArrayList<ReturnScreenFormDB> array ) { this.bookId = array ; } //ゲット本ID public ArrayList<ReturnScreenFormDB> getBookId( ) { return this.bookId ; } //セット本タイトル public void setBookTitle( ArrayList<ReturnScreenForm> bookTitle ) { this.bookTitle = bookTitle ; } //ゲット本タイトル public ArrayList<ReturnScreenForm> getBookTitle( ) { return bookTitle ; } //セット会員ID public String getMemberId( ) { return memberId ; } //ゲット会員ID public void setMemberId( String memberId ) { this.memberId = memberId; } --JSPDBBean-- private String dbbookTitle; // = "御徒町"; //DB本タイトル private String dbbookId; // ="0041"; //DB本ID //セット本タイトル public void setDBBookTitle( String dbbookTitle ) { this.dbbookTitle = dbbookTitle ; } //ゲット本タイトル public String getDBBookTitle( ) { return this.dbbookTitle ; } //セット本ID public void setDBBookId( String dbbookId ) { this.dbbookId = dbbookId ; } //ゲット本ID public String getDBBookId( ) { return this.dbbookId ; } --struts-config.xml-- <form-beans> <form-bean name="RETURNSCREEN" type="rentalPackage.ReturnScreenForm"> </form-bean> </form-beans> <action path="/Return" type="rentalPackage.ReturnScreenAction" name="RETURNSCREEN" scope="request" parameter="submitPropertyReturnScreen" validate="false"> <forward name="successReturnScreen" path="/ReturnScreen.jsp"/> </action> --質問-- JSPの画面表示はできました。 しかし、番号を入力後検索をDBにかけると エラーが出力されます。Beanのプロパティに対するゲッターエラーと感じています。 大変申し訳ありませんが本当に助けてほしいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java / jsp selectedについて

    Formの<SELECT>について教えて下さい。 リストの内容はデータベースからjavaで取得し、Bという名前のArrayListに格納。それをフォームのセレクトボックスでjspで取得し表示しています。 やりたい事は、java側でAの名前でセットしたデータがBにあれば、セレクトボックスで選択した状態にしたいのですが、どうしてもうまくいきません。 以下のコードだと if (A.equals(B)) のところがおかしいようで、試しに if(A.equals("りんご"))の様にデータ名を明示的に書くとうまくいきます。 しかしそうすると今度は、セレクトボックスで"りんご"が選択された時にすべてのデータに selected が入り、セレクトボックスの最後のデータが選択状態になります。 悪いところだらけのコードのようです…。 すみませんがご教授お願い致します。 <%  //キー Aで設定したデータを取得 String A = (String)request.getAttribute("A"); %> <%  //ArrayListに入っているデータをループで取得  for (int i = 0; i < al.size(); i++) {   HashMap hash = (HashMap)(al.get(i));   String B = (String)hash.get("B"); %> <option <%   //Bの値がAと同じであれば選択状態にする。 if (A.equals(B)) { %> selected <% } %>   value = <%= (String)hash.get("B") %>><%= (String)hash.get("B") %> <% } %>

    • ベストアンサー
    • Java
  • jsp/サーブレット

    jsp サーブレットを勉強しています。 jspに入力された値を サーブレットに投げます。 サーブレットからjavaクラスに値を投げて javaクラスで値が正しいかどうかを判断します。 その結果をサーブレットに投げて、 サーブレットからjspに投げて jspで結果を表示する。というのは理解できました。 しかし私が行いたいのは、 クライアントがjspにアクセスしたときに、 javaクラスにある値をjspに表示させたいというものです。 この場合はサーブレットに何も投げるものがないのですが、 jsp→サーブレット→javaクラス→サーブレット→jsp このようにサーブレットを使って表示させるには、 どのようなプログラムを書いたらいいのでしょうか。 わかりにくい説明で大変申し訳ないですが、 具体的なプログラムを教えていただけるとありがたいです。 また、参考になりそうなURLがありましたら教えてください。 よろしくお願いします。

  • javaでDBから取得したデータのJSP表示

    JAVAでDBから取得し ArrayList shikakuCdList = shikakuCd_Data(); request.setAttribute("shikakuCdList", shikakuCdList); JSPでコンボボックスに表示しようと思います <% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%> <% for ( int i = 0; i < bumonlist.size(); i++ ){%> <option value=" (1)ここの記述方法も  "></option> <% }%> という記述にしていますが、うまく動きません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPとJavaBeansについて

    JSPとJavaBeansを用いて情報を共有したいと考えています。 値を取得した後に配列に入れています。 ArrayList list = new ArrayList(); while(rs.next()){ int op = rs.getInt("op"); list.add(new Integer(op)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); この後に、in[i]の要素をBeansに送り、別のJSPでその値を使いたいと考えています。 ただ、Beansで配列のデータを扱う場合にはどのようにすれば宜しいのでしょうか? アドバイスを頂けると助かります。 宜しくお願いします。

  • JSPでのArrayListの表示について困っています

    以下のようにしてスレッドNoが同じものだけ表示したいと考えております。 servletの「text」という変数にはすべての値が格納されているところまでは確認できました。 それをJSPにて表示したいのですが、どのようにすれば出力されるのかわかりません。 どなたかお教えいただければと思います。 宜しく御願い致します。 --------------------------------------------------------- java /** * *TEXTテーブルからスレッドNoが同じものを返すメソッド * * */ public ArrayList selecttext(int no)throws SQLException{ ArrayList<Textbeen> list = new ArrayList<Textbeen>(); TextDAO kei =new TextDAO(); Connection db=kei.createConnection(); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM TEXT WHERE KB_TH_NO='"+no+"' "); while(rs.next()){ String name=rs.getString("KB_NAME"); String tino =rs.getString("KB_TITLE_NO"); String title = rs.getString("KB_TITLE"); String mail = rs.getString("KB_MAIL"); String text = rs.getString("KB_TEXT"); String pass = rs.getString("KB_TITLE_PASS"); String date = rs.getString("KB_TIME"); int th_no = rs.getInt("KB_TH_NO"); Textbeen thread = new Textbeen(name, title, tino, mail, text, pass, date, th_no); //TO(Threadオブジェクト)を、保持するリストに追加 list.add(thread); } kei.closeConnection(db); return list; } ---------------------------------------------------------- servlet ArrayList text = new ArrayList(); try{ text = list.selecttext(TH_no); } catch(Exception e){ e.getStackTrace(); } request.setAttribute("test", text); String nextPage = "/view/user/ThreadTop.jsp"; ----------------------------------------------------------

  • [JSP]ページの挿入!?

    JSPでページを挿入する際・・・ <jsp:include page="Menu.jsp" flush="true"> としますが、 たとえばRequestからファイル名を取得するにはどうすればいいでしょう? ↓これじゃだめですよね?だめでした。 ~/Test.jsp?target=Menu.jsp で、 <jsp:include page="<%= request.getParameter("target") %>.jsp" flush="true"> うぅぅん。

    • ベストアンサー
    • Java

専門家に質問してみよう