菜鸟,高分求解决方案!
前前后后我的小项目还是写了有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语句!就好操作了!不关你是要分页,还是要按条件查询、以及刷新!都可以!
------解决方案--------------------
------解决方案--------------------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)