Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(JSP DB 表示)
閲覧数:1931
掲示板(JSP DB 表示)
名前
匿名
題名 JSP DB 表示
質問内容

質問を評価する
(0ポイント)
こんにちは。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がない)といったようになるので
この組み方にしました。
アドバイスお願いします 

質問日時 2013-04-12 15:53:14
名前
匿名
回答内容

回答を評価する
(0ポイント)
空のリストを設定すればいいのですよ。
回答日時 2013-04-12 16:04:46
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です

ひとつ前に作成したものも、少しのせておきます

if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){
        for(int i=0; i<10; i++){
    
            if(request.getAttribute("list")!=null){
                List list=(List)request.getAttribute("list");
                out.print(list.get(i)+"    ");
            }
            if(request.getAttribute("list1")!=null){
                List list1=(List)request.getAttribute("list1");
                out.print(list1.get(i)+"    ");
            }
            if(request.getAttribute("list2")!=null){
                List list2=(List)request.getAttribute("list2");
                out.println(list2.get(i));
            }

↑は リストのどれかが空だとエラーがでろのと、list.sizeで長さが取れないなとおもい、あきらめました・・・
list.sizeっで指定したリストが空の場合があるので><


匿名さん>空のリストとは?なんかひらめきそうですが、わかりません・・・            
回答日時 2013-04-12 16:57:57
名前
匿名
回答内容

回答を評価する
(0ポイント)
空と言えばnullではなく0件だろう。
回答日時 2013-04-12 20:54:24
名前
匿名
回答内容

回答を評価する
(0ポイント)
二次元配列で返ってきていて・・・・
ないときは 0件いれてあげるてことですか??

それでif文でわけていってあげるかたちですかね・・・

回答日時 2013-04-13 22:08:20
名前
匿名
回答内容

回答を評価する
(0ポイント)
今度はマルチポストか。

?List<Data> list = new ArrayList<Data>();←0件
?List<Data> list = null;←null


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

>if(request.getAttribute("list2")!=null){

そうすればこんなのもいらない、すっきりしたソースになる。

Servletって見にくい。何でも良いからフレームワークを使うべきだと思う。
MVCを抑えた上でね。
回答日時 2013-04-15 01:28:28
名前
匿名
回答内容

回答を評価する
(0ポイント)
質問者です
0件とnullの違いについて学習させていただきました
ありがとうございます!!
回答日時 2013-04-16 10:06:08
名前
匿名
回答内容

回答を評価する
(0ポイント)
サーブレットが見にくいんじゃなくて、役割ごとに分離され
てないから見にくいんだろう。
回答日時 2013-04-16 22:27:07
名前
匿名
回答内容

回答を評価する
(0ポイント)
そもそも、コードハイライト機能を入れていない場所でコ
ードを公開しても見づらいのは当たり前。
回答日時 2013-04-18 10:31:30
名前
匿名
回答内容

回答を評価する
(0ポイント)
ま、感覚の差だなあ。
Windows標準のメモ帳でしか開発させてくれない現場だって

あるんだから、慣れの問題もある。
無論、環境が整ってる方が良いのは当たり前だがね。
回答日時 2013-04-18 17:36:29
名前
匿名
回答内容

回答を評価する
(0ポイント)
>Windows標準のメモ帳でしか開発させてくれない現場だって

ひど!でも、自分も昔そうだったけ。。
JSPべた書きも「Ctrl+space」とか効かないんだよね。
もうプラグインあるのかな?

せめて、JSPはJSP2.0タグ使おうよ。
回答日時 2013-04-19 18:53:13

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道