1

MVCフレームワークを使用しているので、クエリの結果、つまりResultSetを表示のためだけにJSPに渡したいです。

私のサーブレットコード:

Connection c=Connectivity.dbConnect();
       PreparedStatement ps=c.prepareStatement("select role from login where userid=? and password=?");
       ps.setString(1,userid);
       ps.setString(2,pass);
       ResultSet rs=ps.executeQuery();

     if(rs.next())
     {

          if(rs.getString(1).equals("admin"))
                   {

           ps=c.prepareStatement("select * from user where userid=?");
           ps.setString(1,userid);
           rs=ps.executeQuery();   
           Result r=ResultSupport.toResult(rs);          
           request.setAttribute("res",r);       

           rs.close();
           c.close();
           return mapping.findForward("us");//to User.jsp


                   }
      }

ResultSupport.toResult()を使用してJSPに転送しました(「us」マッピングによって転送されます)が、JSPにJSTLコードが必要です。

User.jsp-

<c:forEach var="data" items="${requestScope.res.rows}">
      <h1>${data.userid}</h1>
               <h2>${data.name}</h2>
               <h2>${data.password}</h2>
               <h2>${data.emailid}</h2>
  </c:forEach>

request.setAttribute("ResultSet",rs); さらに、JSPで接続を閉じることができないように、ResultSetを直接渡すと。

このコードは正常に機能しますが、JSTL / ELまたはリストを使用したくないので、サーブレットのResultまたはResultSet属性を処理できるJSPのスクリプトレットを使用したいと思います。

4

1 に答える 1

0

あなたはこのようにあなたの問題を克服することができます:

1)データベース操作クラスで、POJOを使用してResultSetから結果を追加します。

Contacts myContact = new Contacts();
myContact.setOffice(rs.getString("office1"));
myContact.setMail(rs.getString("xx@xx.com"));

2)次に、リストを使用して結果を保存します

List<Contacts> myList = new ArrayList<Contacts>();
myList.add(myContact);

3)リストをリクエスト/セッションオブジェクトに渡し、そこでResultSet/Connectionを閉じます

request.setAttribute("LIST",myList);
rs.close(); 
conn.close()

4)JSPでリストを取得し、必要に応じてリストを繰り返し処理します

ArrayList<Contacts> myList = (ArrayList<Contacts>) request.getAttribute("LIST");
for(Contacts obj: myList){
  out.print(obj.getMail());
  ....
  ....
}
于 2012-10-17T06:34:03.717 に答える