親子におすすめの新型プラネタリウムとは?

以下のようにしてスレッド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";
----------------------------------------------------------

A 回答 (2件)

サーブレット側で、ArrayListクラスのオブジェクト変数textの


インスタンスをsetAttributeメソッドで設定しているので

後は、サーブレット側でJSPへ遷移制御するコーディング追加↓
RequestDispatcher dp = request.getRequestDispatcher(nextPage);
dp.forward(request,response);

その後は、ThreadTop.jsp側でArrayListクラスのオブジェクト変数textの
インスタンスをgetAttributeメソッドで取得して
配列要素分のTextbeenデータを取得表示する。
<html>
<head><title></title></head>
<body>

<%
//オブジェクトインスタンス取得
ArrayList text = request.getAttribute("test");
//要素分ループ
for(int i=0; i<text.size(); i++) {
Textbeen thread = (Textbeen)text.get(i);


//以下省略
}
%>
</body>
</html>
    • good
    • 2

>request.setAttribute("test", text);



とやっているのでServletからJSPへはforwardしているのですよね?
だとすればJSP側で

ArrayList text = (ArrayList)request.getAttribute("test");

で取得できますので
あとは

for (int i = 0; i < text.size(); i++) {
Textbeen thread = (Textbeen)text.get(i);
}

のような感じで取り出せば良いでしょう。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

QjspでのArrayListの値の表示

jsp上でBeanで以下のように設定されている

ArrayList<ArrayList<Integer>> a;
a.add(new ArrayList<Integer>);
a.add(new ArrayList<Integer>);
a.add(new ArrayList<Integer>);
a.get(0).add(0);
a.get(0).add(1);
a.get(1).add(2);
a.get(1).add(3);
a.get(1).add(4);
a.get(1).add(5);
a.get(2).add(6);
a.get(2).add(7);
a.get(2).add(8);

aのような行と列が不定のArrayListの全ての値をjspの画面上に

 値 値 値
 0  2  6
 1  3  7
   4  8
   5

といったようにテーブルで表示したいのですがjspにどのような既述をすればよいでしょうか?
クリックしたときの処理などの導入や項目を増やすなど拡張する場合があるので
以下のような形とレイアウトが同じようになると望ましいです

<td>
<table>
<tr>値</tr>
<tr>0</tr>
<tr>1</tr>
<tr>2</tr>
</table>
</td>
<td>
<table>
<tr>値</tr>
<tr>3</tr>
<tr>4</tr>
<tr>5</tr>
</table>
</td>
<td>
<table>
<tr>値</tr>
<tr>6</tr>
<tr>7</tr>
<tr>8</tr>
</table>
</td>

jsp上でBeanで以下のように設定されている

ArrayList<ArrayList<Integer>> a;
a.add(new ArrayList<Integer>);
a.add(new ArrayList<Integer>);
a.add(new ArrayList<Integer>);
a.get(0).add(0);
a.get(0).add(1);
a.get(1).add(2);
a.get(1).add(3);
a.get(1).add(4);
a.get(1).add(5);
a.get(2).add(6);
a.get(2).add(7);
a.get(2).add(8);

aのような行と列が不定のArrayListの全ての値をjspの画面上に

 値 値 値
 0  2  6
 1  3  7
   4  8
   5

といったようにテーブルで表示したいので...続きを読む

Aベストアンサー

こんにちは。

>以下のような形とレイアウトが同じようになると望ましいです

タグが構成的におかしいので勝手に直しました。
*インデントに全角スペース使ってます
動きは追って貰えばわかると思いますので説明を割愛します。

 <table border="1">
  <tr>
<%
 // 列分の処理
 for ( int i = 0; i < a.size(); i ++ ) {
%>
   <td valign="top">
    <table>
     <tr>
      <th>値</th>
     </tr>
<%
  // 行分の処理(指定列の行数分)
  for ( int j = 0; j < a.get(i).size(); j ++ ) {
%>
     <tr>
      <td>
       <%=a.get(i).get(j) %>
      </td>
     </tr>
<%
  }
%>
    </table>
   </td>
<%
 }
%>
  </tr>
 </table>

QリクエストからArrayListのデータが取得出来ない

いつもお世話になっております。

表題の通り、リクエストからArrayListのデータが取得出来ないのです。

javaで、
ArrayList cmArray = new ArrayList();
データベースからデータ取得
request.setAttribute("category",cmArray.toArray());

jspで
ArrayList list = new ArrayList();
list = (List)request.getAttribute("category");
と取得しようとしています。
そうすると、java.lang.ClassCastExceptionが発生してしまいます。

どなたか分かる方がいましたら、ご教授下さい。
よろしくお願い致します。

Aベストアンサー

requestには、cmArray.toArray()でObjectの配列が入ってます。
なのでJSPでListで受け取ろうとしてClassCastExceptionが発生しています。

request.setAttribute("category",cmArray);
でいいんではないでしょうか。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

Qjavaで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>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

Aベストアンサー

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>
><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

QJSPでリンクを利用してパラメータを次画面に渡す方法について。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">
---------------------------------------------------------------------

としておりますが、次画面へ遷移すると、ID_Bの値はnullとなってしまうために、正常にデータの取得ができません。

二つのパラメータを使用する場合のパラメータを渡す方法を教えて頂きたいと思います。よろしくお願いします。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">...続きを読む

Aベストアンサー

<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>&ID_B=<%= rs.getString("ID_Bcat_id") %>">番号</a>

としてID_Bを&で繋げればMethod="get"で送れますね。
inputタグで送る場合はformタグでactionアトリビュートに飛ぶjspを指定してsubmitボタンかJavaScriptでsubmitさせなければならないと思います。

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

Qリクエストに応じたselectedの初期値設定方法

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.forward(request, response);

[[[[Detail.jsp]]]]
<form name="Japan">
<table border="1">
<tr>
<th>Japan</th>
<td>
<select name="Japan" id="Japan" >
<option value="YES">YES</option>
<option value="NO">NO</option>
<option value="KNOW">DON'T KNOW</option>
</select>
</td>
</tr>
</table>
</form>

リクエストに応じたOPTIONをselectedの初期値にする方法を教えて下さい。

java servletからjspを表示する際に、
setAttributeした値に応じてプルダウンの初期値に設定するにはどうしたら良いですか?

以下の様にDetail.jspに移動する前に、NOをセットしています。
普通に実行したら、YESで表示されてしまいます。
jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

例)
[[[[[ShowDetail.java]]]]]
request.setAttribute("JAPAN", "NO");
request.getRequestDispatcher("/Detail.jsp")
.f...続きを読む

Aベストアンサー

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると思います。

<%
// 例だとjapanにNOが入っている
String japan = (String)request.getAttribute ( "JAPAN" );
%>

<select>
<option value="YES"<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>>YES</option>
<option value="NO"<%= "NO".equals(japan) ? " selected=\"selected\"" : ""; %>>NO</option>
<option value="KNOW"<%= "KNOW".equals(japan) ? " selected=\"selected\"" : ""; %>>KNOW</option>
</select>

各optionでどの文字列が入っているかによってselected="selected"を出力すれば良いです。

<%= "YES".equals(japan) ? " selected=\"selected\"" : ""; %>

上の記述は

if ( "YES".equals(japan) ) {
out.write ( " selected=\"selected\"");
} else {
out.write ( "" );
}
と同義です。
ようするにjapanにYESが入ってきたらselected="selected"を出力することにより初期選択項目とする。
NOが入ってくれば"YES".equals(japan)には該当しないので無出力、次の"NO".equals(japan)で該当するのでNOの<option>が初期値となります。

こんにちは。

>普通に実行したら、YESで表示されてしまいます。
>jsp側で何かを追記すれば良いと思うのですが、全然わかりません。。。

あと、カテゴリがJavaScriptではなくJavaですね。

順に考えてみませんか。初期値を設定するには何が必要でしょうか。
今は何もしていないから一番上のYESが表示されています。
<option value="NO" selected="selected">とする必要がありますよね。
そうしたらそれを出力するようにJSPを記述すればいいわけです。

フレームワークを何も利用していなければ以下のようになると...続きを読む

QsetAttribute getAttribute 配列内容受け渡し  について 

こんいちは。
setAttributeでセットした値をgetAttributeを使用して表示したいのですがうまくいきません。

あとsession.setAttributeとrequest.setAttributeの違いがわかりません。
session はなんとなくわかるのですが、requestがいまひとつわかりません。

どなたか教えていただけないでしょうか?
よろしくお願いいたします。

下記がコーディングの内容です。

test.jsp

<%@ page contentType="text/html;charset=Shift_JIS"
import="java.sql.*, java.util.*" %>
<%

String[] desc={"aaa","bbb","ccc","ddd","eee"};
session.setAttribute("desc",desc);

Vector vect = (Vector)session.getAttribute("dpt");

Iterator itr = vect.iterator();

while(itr.hasNext()) {
String[] temp = (String[])itr.next();

out.println(temp[0]);
out.println(temp[1]);
}
%>
<html>
<body>
t_3 test
</body>
</html>

こんいちは。
setAttributeでセットした値をgetAttributeを使用して表示したいのですがうまくいきません。

あとsession.setAttributeとrequest.setAttributeの違いがわかりません。
session はなんとなくわかるのですが、requestがいまひとつわかりません。

どなたか教えていただけないでしょうか?
よろしくお願いいたします。

下記がコーディングの内容です。

test.jsp

<%@ page contentType="text/html;charset=Shift_JIS"
import="java.sql.*, java.util.*" %>
<%

String[] ...続きを読む

Aベストアンサー

String[] desc={"aaa","bbb","ccc","ddd","eee"};
session.setAttribute("desc",desc);

Vector vect = (Vector)session.getAttribute("dpt");

Iterator itr = vect.iterator();


うまくいくわけがないですね。

String[]
型で格納したんだから。
受け取る時も、
String[]
型でキャストしないと無理です。
なぜ
Vectorでキャストするのでしょうか?

それに格納するときの
キー値が
"desc"
になっていて
どうして、
取得する時キー値が
"dpt"
にしているのでしょうか?


requestは
Httpプロトコルでいうところの1つセッション
をあらわすオブジェクトをサーブレットコンテナ
が実装したものです。

session
はブラウザのプロセスに対応する
セッションIDと該当するHttpSession
オブジェクトをサーブレットコンテナ側で
生成して、
一定期間存続させることで、
あたかも、セッションが確立させしているように
Http上でみせかけるための
しくみを提供するものです。

詳細は調べてください。

以上

String[] desc={"aaa","bbb","ccc","ddd","eee"};
session.setAttribute("desc",desc);

Vector vect = (Vector)session.getAttribute("dpt");

Iterator itr = vect.iterator();


うまくいくわけがないですね。

String[]
型で格納したんだから。
受け取る時も、
String[]
型でキャストしないと無理です。
なぜ
Vectorでキャストするのでしょうか?

それに格納するときの
キー値が
"desc"
になっていて
どうして、
取得する時キー値が
"dpt"
にしているのでしょうか?


request...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング