日期:2014-05-20 浏览次数:20860 次
public List<Book> readBook(String sql,List<Book> books){ con = DatabaseDAO.getCon(); try{ pt = con.prepareStatement(sql); rs = pt.executeQuery(); while(rs.next()) { Book book = new Book(); book.setBookId(rs.getInt("bookId")); book.setBookNumber(rs.getString("bookNumber")); book.setBookName(rs.getString("bookName")); book.setBookAuthor(rs.getString("bookAuthor")); book.setBookPress(rs.getString("bookPress")); book.setBookPicture(rs.getString("bookPicture")); book.setBookAmount(rs.getInt("bookAmount")); book.setBookType(rs.getString("bookType")); book.setBookPrice(rs.getDouble("bookPrice")); book.setBookRemark(rs.getString("bookRemark")); book.setBookSales(rs.getInt("bookSales")); book.setBookPublishTime(rs.getDate("bookPublishTime")); books.add(book); } }catch (SQLException e) { e.printStackTrace(); }finally{ DatabaseDAO.closeRs(rs); DatabaseDAO.closePt(pt); DatabaseDAO.closeCon(con); } return books; }
public List<Book> search() throws Exception{ UserDAO userDao = new UserDAO(); List<Book> booksTemp = userDao.searchBook(book,searchType); if( booksTemp != null){ books = booksTemp; HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("books", books); return books; }else{ return null; } }
//放在session里了 request.[color=#FF0000]getSession()[/color].setAttribute("books", books);
------解决方案--------------------
这就是JSON,直接写可用的。
var data = [
{name:"123", age:23}.
{name:"123", age:23}
]
alert(data[0].name);
问题在于如何将List转为上面看到的JSON结构,你可以用开源包来处理:
http://json-lib.sourceforge.net/
示范代码的话,网上Google应该大把。
------解决方案--------------------
List<Book> booksTemp = userDao.searchBook(book,searchType); response.setCharacterEncoding("utf-8"); PrintWriter write = response.getWriter(); JSONArray js = null; js = JSONArray.fromObject(booksTemp.toArray()); write.write(js.toString()); js.clear(); write.flush(); write.close();
------解决方案--------------------
不太明白lz的意思,lz想实现分页,而且不用每次都查询数据库,跟用不用js没有关系。
只要你不重复请求数据库,就可以。
不过,问题来了。
你要将数据存储在什么范围内?
对于多线程并发访问,分页是否会出现数据不正确呢?
如果是单纯的单线程,lz可以考虑 将分页信息list做成单例模的,这个单例,大家共用。
只要有一个人进来调用了分页,那么单例中就有分页信息了。
下一个人进来的时候(包括你),在调用分页之前,先去list中查询是否有,如果有,则直接拿出,没有的话,再查询数据库。
这种思路会比较好。
不过要是多线程并发访问,你就要考虑数据一致性问题了。