ちょっと変わったマニアな作品が集結

こんにちは。DBから取得 JSPに表示を勉強しています。
条件が 列指定 前方指定 昇順降順などあり
列ごとに取得 表示といった形で表示することができました
ただこれだと 横に表示されるのですが、どうすれば縦に表示できるように
組みなおせますか?それかこの組み方だとHTMLでがんばったほうが良いのでしょうか?アドバイスお願いします


JSP(検索、表示)
<table border>
<tr>
<td>
検索内容 TESTNO <input type="checkbox" name="TESTNO" value="TESTNO"
</td>
<td>
NAME <input type="checkbox" name="NAME" value="NAME" >
</td>
<td>
KANA <input type="checkbox" name="KANA" value="KANA" >
</td>
</tr>
</table border>
<table border>
<tr>
<td>
検索条件 <input type="text" name="name" >(NAME前方一致)
</td>
</table>

<table border>
<tr><td>
ソート   <select name="menu">
<option value=TESTNO>TESTNO</option>
<option value=NAME>NAME</option>
<option value=KANA>KANA</option>
</select>

<input type="radio" name="narabi" value="ASC" /> 昇順
<input type="radio" name="narabi" value="DESC"/> 降順
</td></tr>
</table>

<br><input type="submit" value="検索">
</from>
</body>
</form>

<Hr>

<%
if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){


if(request.getAttribute("list")!=null){
List list=(List)request.getAttribute("list");
for(int i=0; i<list.size(); i++){
out.print(list.get(i)+" ");
}
}
%><br>
<%

if(request.getAttribute("list1")!=null){
List list1=(List)request.getAttribute("list1");
for(int i=0; i<list1.size(); i++){
out.print(list1.get(i)+" ");
}
}
%><br>
<%
if(request.getAttribute("list2")!=null){
List list2=(List)request.getAttribute("list2");
for(int i=0; i<list2.size(); i++){
out.print(list2.get(i)+" ");
}
}
%><br>

サーブレット(取得、フォワードで転送)

String name=request.getParameter("name");
//NAMEの前方一致条件取得
String narabi=request.getParameter("narabi");
//降順、昇順、の値取得
String menu=request.getParameter("menu");
//昇順、降順するところの列 name取得



db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+1+",'山田', 'ヤマダ')");
db.updateExec("insert into TESTTABLE1(TESTNO,NAME,KANA) values("+2+",'佐藤', 'サトウ')");
・・・・・・
//課題のため10行入力


db.commit(); //コミットして 確定

ArrayList list;
ArrayList list1;
ArrayList list2;
//リスト作成



if(narabi!=null){//昇順 降順にチェックがあるか判断
String[][]hai4=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%' order by "+menu+" "+narabi+" ;");
//nameで前方一致 menuで昇順降順場所 narabiで降順昇順

list = new ArrayList(Arrays.asList(hai4[0]));
list1 = new ArrayList(Arrays.asList(hai4[1]));
list2= new ArrayList(Arrays.asList(hai4[2]));

}else{//昇順降順なければこっち

String[][]hai3=db.selectExec("SELECT * FROM TESTTABLE1 WHERE NAME LIKE'"+name+"%';");
//nameで前方一致

list = new ArrayList(Arrays.asList(hai3[0]));
list1 = new ArrayList(Arrays.asList(hai3[1]));
list2 = new ArrayList(Arrays.asList(hai3[2]));

}

if (request.getParameter("TESTNO") != null){
request.setAttribute("list", list);
}

if (request.getParameter("NAME") != null){
request.setAttribute("list1", list1);
}

if (request.getParameter("KANA") != null){
request.setAttribute("list2", list2);
}


結果

1 2 3 4 5 6 7 8 9 10
山田 佐藤 山本 伊藤 武田 鈴木 小野 松井 田中 高橋
ヤマダ サトウ ヤマモト イトウ タケダ スズキ オノ マツイ タナカ タカハシ

1 山田 ヤマダ
2 佐藤 サトウ
・・・・・・
といった表示にしたいです
行ごとに取得して繰り返すのがいいのかなと思って最初やていたのですが
列指定したときに エラー(指定listがない)といったようになるので
この組み方にしました。
アドバイスお願いします

このQ&Aに関連する最新のQ&A

A 回答 (1件)

行ごとに取得して表示するように直しませんか?


そのほうが考え方として自然じゃないですか?
たとえばカナだけチェックをつけたりするとエラーになったりするんですよね?
でも、それを試行錯誤するほうが勉強になりますよ!

がんばってSQLのデータを返すところを直しませんか?
項目数が可変になっても問題ないようにできるはずですよ?

行き当たりばったりで作っていませんか?
常に最終的にどうやりたいかを意識すればきっとできますよ!

がんばりましょう!
    • good
    • 0
この回答へのお礼

そうですよね><
たぶんSQL文を縦列で格納してるところが問題ですよね・・・
SQL文を横列で習得、格納してあげるといいってことですよね?
考え方的にはあってますか??
アドバイスお願いします

お礼日時:2013/04/13 19:53

このQ&Aに関連する人気のQ&A

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

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

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

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タグを使って出力する方法もあります。
こちらの方法がお勧めですが。

Qラジオボタンの選択肢をサーブレットで取得するには?

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="radiobutton">
割引手形 
<input type="radio" name="radiobutton" value="radiobutton">
手形貸付 
<input type="radio" name="radiobutton" value="radiobutton">
証書貸付
</p>

ブラウザー側からは
<form action="http://localhost/servlet/yuushi" method=post>
の指定を行っています。
サーブレットでの受け取り方を、
String p2=request.getParameter("radiobutton");
 とすると、p2=radiobuttonとデータがセットされました。

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="...続きを読む

Aベストアンサー

それぞれの項目の value を、ユニークにして下さい。例えば、

<input type="radio" name="radiobutton" value="1"> 割引手形 
<input type="radio" name="radiobutton" value="2"> 手形貸付 
<input type="radio" name="radiobutton" value="3"> 証書貸付

そうすれば、「手形貸付」を選択したときに

String p2 = request.getParameter("radiobutton");

とすれば、p2 は "2" になります。

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...続きを読む

QJSPでデータ一覧表示

JSP+Bean+Servletで作っています。

BeanでDB接続、データを取得して、
それをJSPで一覧表示として表示させたいのですが、
どのタグを使えばいいのでしょうか。
また、その場合、タグは、Servletとか
Beanでかく必要がありますか。


たとえば、今、DBに30個データがある場合、
JSPでそれをTABLEタグを使って
一覧表示させますよね。

でもJSP側では、<TR><TD></TD></TR>の
データをいくつセットできるか、っていう
数がきまってますよね。てことは、
ServletとかBeanでHTMLのタグをうって
表示させないといけないんですか???


やりたいことは、BeanとかServletで
タグは書かずに、JSPでパラメータだけ
受け取って、その数だけデータを
表示させたいんです。
(JSPだけでタグをかいて、パラメータで
わたってきたデータを表示させたい。)

そういうことってできますか??
・・・説明がうまく出来てないかとは思うのですが
よろしくお願いします。

JSP+Bean+Servletで作っています。

BeanでDB接続、データを取得して、
それをJSPで一覧表示として表示させたいのですが、
どのタグを使えばいいのでしょうか。
また、その場合、タグは、Servletとか
Beanでかく必要がありますか。


たとえば、今、DBに30個データがある場合、
JSPでそれをTABLEタグを使って
一覧表示させますよね。

でもJSP側では、<TR><TD></TD></TR>の
データをいくつセットできるか、っていう
数がきまってますよね。てことは、
ServletとかBeanでHTMLのタグをうって
表...続きを読む

Aベストアンサー

どもども^^

例えば、JSPが受け取ったデータ(Stringの配列やら、HashTableやら)を
ループを使って表示させればいいのでは??

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<table>
<%
for(int i=0; i < 結果.length; i++){
%>
<tr>
<td><%= 結果[i] %></td>
</tr>
<%
}
%>
</table>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

こんな感じでHTMLのタグをJAVAのforループの中にほりこんで
やれば、出来ると思うけど、だめ??

がんばってください。
わかりにくい説明だったら、ごめんね。

QJSPで