2016-08-20 10 views
0

サーブレットを介してJSPフォームの値をデータベースに送信し、別のJSPで結果を受け取ったかったのです。しかし、私はデータベースクエリを通して受け取った完全な結果を表示することができますが、それらを分割して、必要な値だけを表示することはできませんでした。JSP-Servlet:JSPで受け取ったデータベースレコードをサーブレットから分割する方法

DBクラスの抜粋:

public ArrayList<String> getTablenodomain() 
{ 
    ArrayList<String> ob1 = new ArrayList<String>(); 
    try 
    { 
    s = con.prepareStatement("select AU_ID,DOMAIN_ID,SAFE,SAFE from auditstats"); 
    rs = ps.executeQuery(); 
     while(rs.next()) 
     { 
     ob1.add(rs.getString(1)); 
     ob1.add(rs.getString(2)); 
     ob1.add(rs.getString(3)); 
     ob1.add(rs.getString(4)); 
     } 
    } 
    catch(Exception ee) 
    { 
     System.out.println("WHERE ARE YOU DOMAIN"); 
    } 
    return ob1; 
} 

マイサーブレットスニペット:

DBCoding ob3 = new DBCoding(); 
if (safe.equals("ALL")) 
{ ArrayList<String> a3 = new ArrayList<String>(); 
    a3 = ob3.getTablenodomainsd(); 
    request.setAttribute("safe", a3); 
} 
else 
{ 
    ArrayList<String> al3 = new ArrayList<String>(); 
    al3 = ob3.getTable3(safe, domain); 
    request.setAttribute("safe", al3); 
} 
RequestDispatcher rd = request.getRequestDispatcher("page2.jsp"); 
rd.forward(request, response); 

Page2.jsp:

<% 
    ArrayList<String> ob3 = new ArrayList<String>(); %> 
    <%if(request.getAttribute("safe")!=null) 
    { 
     ob3 = (ArrayList<String>)request.getAttribute("safe"); 
     %> 

     <%for(int j=0;j<ob3.size();j++) 

     { 
     %> 
<table> 
      <tr>STEP-DURATION</tr> 
      <tr><%=ob3.get(j)%></tr> 
</table>    
    <%} 

    }%> 

このところで、私は/(すべての列を完全なデータを受け取ります行)、page2.jspに表示されます。しかし、データを個別に入手するにはどうしたらいいですか?

答えて

0

あなたがすべきことは、1つの行のすべてのデータを格納するためのPOJOを作成することです。以下のような...

public class Safe{ 
    private String auId; 
    private String domainId; 
    private String safe; 
    //other fields... 

    //constructor, getters, setters 

} 

今、あなたのgetTablenodomian()メソッドは、

public ArrayList<Safe> getTablenodomain() 
    { 
     ArrayList<Safe> list = new ArrayList<Safe>(); 
     Safe safe = null; 

     try{ 
s = con.prepareStatement("select AU_ID,DOMAIN_ID,SAFE,SAFE from auditstats"); 

rs = ps.executeQuery(); 
while(rs.next()) 
{ 
    safe = new Safe(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4)); 
    list.add(safe); 

} 
} 
     catch(Exception ee) 
    {System.out.println("WHERE ARE YOU DOMAIN");} 
    return list; 

}

とサーブレットのスニペットは

DBCoding ob3 = new DBCoding(); 
       if (safe.equals("ALL")) 
       { ArrayList<Safe> list = ob3.getTablenodomainsd(); 
        request.setAttribute("safe", list); 
        } 

       else 
       { 
        ArrayList<String> al3 = new ArrayList<String>(); 
        al3 = ob3.getTable3(safe, domain); 
       request.setAttribute("safe", al3); 

       } 
} 
     } 
RequestDispatcher rd = request.getRequestDispatcher("page2.jsp"); 

rd.forward(request, response); 
...に変更されます...のようになります。

あなたのjspページは次のようになります:

<% 
    ArrayList<Safe> list= new ArrayList<Safe>(); %> 
    <%if(request.getAttribute("safe")!=null) 
    { 
     list= (ArrayList<Safe>)request.getAttribute("safe"); 
     %> 
<table> 
    <tr> 
     <th>AU_ID </th> 
     <th>DOMIAN_ID </th> 
     <th>SAFE </th> 
    </tr> 
     <% 
     Safe safe = null; 
     for(int j=0;j<list.size();j++){ 
      safe = list.get(j); 
     %> 

     <tr> 
     <td><%safe.getAuId() %></td> 
     <td><%safe.getDomainId() %></td> 
     <td><%safe.getSafe() %></td> 
     </tr> 

    <% 
     } %> 
</table> 

<%  }%> 

ところで、あなたのコーディングスタイルは標準ではありません。データベース操作にはHibernateフレームワークを使用し、MVCパターンを実装するにはSpring MVCを使用することを検討する必要があります。 JSPでは、JSTLタグライブラリExpression Langaugeを使用する必要があります。 JSP内のすべてのJavaコードを避けるようにしてください。

+0

ありがとう。 私はPOJOとを作成し、JSPに私が与えた: 行と列が正しく表示され ​​safe.Auditid ​​safe.DomainId ​​safe.Safeeを、それは、安全なsafe.Auditidとして値を出力しますドミインドとセーフです。実際のデータベース値は取得されません。どこで私は間違えましたか? – Sanjivi

+0

提供されたコードをコピーしている場合。コピーして、私はいくつかの編集をしました。最初は、これらのコードをあなた自身のためのヒントとして提供しました。値は静的に印刷されるため、静的なHTMLコンテンツとして扱われるため、そのまま出力されます。動的コンテンツを印刷する必要がある場合は、スクリプトレットタグ内に配置する必要があります。編集して...コピーしてもう一度やり直してみました。まだ問題があれば、あなたの更新されたコードをポストしてください。 –

関連する問題