日期:2014-05-17  浏览次数:20662 次

菜鸟,高分求解决方案!
前前后后我的小项目还是写了有2个月了。基本功能都达到了预期效果,但现在有三个问题没什么太好的办法,求思路和实现代码!,
我的数据处理方式是,servlet查询数据库,做成二维数组,然后传递给jsp页面,在jsp页面上循环打印,包括<tr></tr>和<td></td>都在循环之中。

两个问题,
1分页
  考虑用循序定一个固定的下标,加判断,翻页就加倍数下标,显示当然还是页面。郁闷的是,这个翻页和上面的对应不起来。

2筛选

  这个基本等于没有办法,我的数据已经由servlet做成二维数组了,如果要在当前页面做筛选效果,那我当期页面需要交互?不会吧。我不知道怎么处理!

3刷新
当前页的刷新如何处理,数据需要重新获取,是前一个servlet传过来的。这个该怎么办了?

菜鸟求救·····高人飞来啊!

------解决方案--------------------
1、分页你最好用SQL分页 这样数据能够稳定
2、我没看懂什么意思(我发现我很菜)
3、想刷新可以用异步刷新 也就是AJAX来做
------解决方案--------------------
select *from (select rownum rown,e.* from emp e) 
where rown>=11 and rownum<=5
SQL分页语句
------解决方案--------------------
查询翻页其实很简单,

第一步:先定义好你要查询的数据源》
1,如果页面上有查询的条件,在写SQL之前要预留参数(你在页面上要查姓名为A的人数据,姓名要作为一个参数组装到SQL中,),分页肯定还需要其他的参数,当前第几页,每页显示几条数据,都要作为参数
通过页面传入servlet再组装到SQL中,(解决数据筛选问题)

第二部: 以什么为载体在页面上呈现,如果有开源框架的话,这个完全可以不用考虑,把你需要的数据直接放在一个map或者list中传到前台就行了。框架有很多处理的标签。为什么要用二维数组呢,找麻烦。就算没有使用到框架,用原生的servert类,也没必要用二维数组吧,自己组装自定义标签,在页面用就OK了,再变态一点,直接在JSP页面上引用JAVA了。关于翻页,你当前页面要保存当前页面的一些数据,比如当前页是第几页,多少条数据,上一页就是 当前页-1 ,下一页就是当前页+1 然后传入后台进行查询(翻页问题)

页面刷新:这个无关紧要吧,这个问题没必要考虑。当你刷新页面的时候,就重新开始分页查询了。如果整体框架没有用到AJAX的话,最好不要考虑用它,
------解决方案--------------------
传到前台应该是List<PageBean>的结构,
PageBean就是含有画面上每行的所有列名。

然后用sql分页,把当前页的开始索引和结束索引值传进sql(比如10行分页,第二页传11, 20)

刷新其实就是再执行检索当前页的数据而已。
------解决方案--------------------
其实你这页面一开始显示的数据就要分页的吧!这样的话!你只有写分页的sql语句了!不然的话!就只有控制循环次数来间接达到分页效果!如假如你有10条记录!你可以让它默认显示5条!也就是循环5次!这种方式是不好的!最好还是改写成分页的sql语句!就好操作了!不关你是要分页,还是要按条件查询、以及刷新!都可以!

------解决方案--------------------
探讨
引用:
查询翻页其实很简单,

第一步:先定义好你要查询的数据源》
1,如果页面上有查询的条件,在写SQL之前要预留参数(你在页面上要查姓名为A的人数据,姓名要作为一个参数组装到SQL中,),分页肯定还需要其他的参数,当前第几页,每页显示几条数据,都要作为参数
通过页面传入servlet再组装到SQL中,(解决数据筛选问题)

第二部: 以……

------解决方案--------------------
JavaBean

package Bean;
//物品类
public class Goods
{
 private int goodsid; // 物品编号
 public String goodsname; // 物品名称
 private float price; // 物品单件

 public void setGoodsid(int goodsid)
 {
this.goodsid = goodsid;
 }
 public int getGoodsid()
 {
return goodsid;
 }
 // 物品名称
 public void setGoodsname(String goodsname)
 {
this.goodsname = goodsname;
 }
 public String getGoodsname()
 {
return goodsname;
 }
 // 物品价格
 public void setPrice(float price)
 {
this.price = price;
 }
 public float getPrice()
 {
return price;
 }
}

单例类

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DbConnection {
 private static Connection conn=null;
 private String driver="com.mysql.jdbc.Driver";
 private String url="jdbc:mysql://localhost:3306/mydata";
 private String user="root";
 private String password="1234567";
 
 private DbConnection(){
try {
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e)