- - PR -
servletからJSP
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-08-15 18:30
お世話になっています。UKです。
servletでファイルのデータを読み取ってJSP側で一覧を表示したいのですが、 どのような方法が一番良いのでしょうか? たとえばJSPで 商品コード 商品名 値段 a000001 あ 250 b000002 い 190 といった表示を行いたいのです。 BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました 次にservlet側でStringの2次元配列に値を格納してJSPにわたして見ようとしたのですが、 JSPでの2次元配列の受け取り方がわかりませんでした。 <servlet> String s[][] = new String[4][4]; request.setAttribute("s", s); getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response); <JSP> String s[][] = request.getAttribute("s"); または String s[][] = request.getParameterValues("s"); と試したのですがうまくいきません。どなたかご教授宜しくお願いします。 またほかに良い方法があれば教えてください | ||||
|
投稿日時: 2003-08-15 19:39
紛らわしいですが、小文字のukです。
UKさんの書き込み (2003-08-15 18:30) より: お世話になっています。UKです。 >servletでファイルのデータを読み取ってJSP側で一覧を表示したいのですが、 どのような方法が一番良いのでしょうか? 方法としては、 >BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました これがいいと思います。下の質問もそうですが、HttpServletRequest#getAttributeの 戻り値はObject型ですので、受け取るときにはキャストが必要です。 | ||||
|
投稿日時: 2003-08-15 20:33
ukさんありがとうございます。名前ややこしくてすみません…
>>BeansにしてJSPに転送しようともおもいましたが、Beans配列のJSPでの受け取り方がわからず断念しました >これがいいと思います。下の質問もそうですが、HttpServletRequest#getAttributeの 戻り値はObject型ですので、受け取るときにはキャストが必要です。 やはりこちらの方がいいのですね。 ではservlet側で MyBean mybean[] = new MyBean[5]; (Beanに値を設定) request.setAttribute("mybean", mybean); getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response); とした時はJSP側でどのように受け取るのでしょうか? | ||||
|
投稿日時: 2003-08-15 20:39
UKさんの書き込み (2003-08-15 20:33) より:
>ukさんありがとうございます。名前ややこしくてすみません… いや、誰でも使いそうな名前にしている以上仕方ないですよね >ではservlet側で MyBean mybean[] = new MyBean[5]; (Beanに値を設定) request.setAttribute("mybean", mybean); getServletContext().getRequestDispatcher("/NextJSP.jsp").forward(request, response); とした時はJSP側でどのように受け取るのでしょうか? MyBean[] mybean = (MyBean[])request.getAttribute("mybean"); でいいと思います。キャストもご存じないとすると、ちょっと心配ですが… | ||||
|
投稿日時: 2003-08-15 21:40
>キャストもご存じないとすると、ちょっと心配ですが… すみません…卒業研究でJSP、サーブレット、Webサービスをすることになりただ今 手探り状態で勉強をはじめたばかりなので。 >MyBean[] mybean = (MyBean[])request.getAttribute("mybean"); これでも試したのですがクラスMyBeanについてシンボルを解決できませんといったエラーがでます。 <jsp:useBean id = "MyBean" class="Bean.MyBean" />もつけています。 試しにMyBean.setTitle("あいうえお");といったBeanに値を設定する文をJSPに挿入したら そこの部分はエラーにはならないのですが、上記のMyBean[]の部分でやはりエラーがでます。 これは何が原因なのでしょうか? | ||||
|
投稿日時: 2003-08-15 23:05
コンバンワ、UK様。ペコ、言いマス。 UK様が悩んでいること、数日前自分が躓いたところに酷似している ようなので、横からレスです。 自分も、まだJAVAを勉強しだしの駆け出し故、正しいアドバイスが 出来るかは不安です。 なので、自分の立てたスレッドに諸先生方の答えてくださった一連の 流れがございます。 少しでも、参考になれば、と思いまして。 →http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5750&forum=12&12 私見ではJSPでBeanを参照する際は、Beanクラスのimportも記述せねば、と 思うのですが…あと、 <jsp:useBean id = "MyBean" class="Bean.MyBean" /> class="Bean.MyBean"の後にscopeの記述も必要じゃないか、と思うのですが… | ||||
|
投稿日時: 2003-08-16 01:46
こんばんわ。 勉強中であればコレクションを使うことを強くお勧めします。 配列より便利だと思います。 簡単な使い方 例えば、BeanでsetAll()、getName() みたいなメソッドをつくり、 Listをつかってみましょう。 Beanの簡単な例 ------------------------ public class Bean { private List names; public List getNames() { // Listが戻されます return this.names; } public setAll() { // ここでConnectionなどをイニシャライズします(省略) StringBuffer sql = new StringBuffer(""); sql.append("select name from user_table "); stmt = conn.prepareStatement(sql.toString()); names = Collection.synchronizedList(new ArrayList()); rs = stmt.executeQuery(); while(rs.next()) { names.add(rs.getString("name")); } // Connectionなど解放します(省略) } ------------------------------------------------- SQL で where 句が必要な場合は setXxxメソッドを増やして、Servletでぶちこんでください。 Listの取り出し方は List list = bean.getNames(); 回し方は for(int i=0;i<list.size();i++){ out.print(list.get(i).toString()+"<br>"); } これをUKさんや、ペコさんのいうようにJSP風にアレンジしてみてください。 配列よりシンプルコードになって、使うのも便利なはずです。 ご参考まで。 | ||||
|
投稿日時: 2003-08-16 02:21
UKさんの書き込み (2003-08-15 21:40) より:
><jsp:useBean id = "MyBean" class="Bean.MyBean" />もつけています。 「つけています」ってなんのために「つけている」んですか? >試しにMyBean.setTitle("あいうえお");といったBeanに値を設定する文をJSPに挿入したら そこの部分はエラーにはならないのですが、上記のMyBean[]の部分でやはりエラーがでます。 これは何が原因なのでしょうか? まず、クラスというのはパッケージまで含めて完全な名前となります。プログラムの中で パッケージを省略してクラス名を書けるのは、java.langパッケージのクラスか、その クラスと同パッケージのクラスか、import文(JSPならimportディレクティブ)で指定した クラスだけです(間違ってたらどなたか訂正してください)。 Bean.MyBean[] mybean = (Bean.MyBean[])request.getAttribute("mybean"); まず、これでエラーが出なくなるかどうか試してください。 | ||||
