日期:2014-05-20 浏览次数:21022 次
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中查询是否有,如果有,则直接拿出,没有的话,再查询数据库。
这种思路会比较好。
不过要是多线程并发访问,你就要考虑数据一致性问题了。