总结写图书管理网站——jsp,jdbc,分页

一、关于连接数据库插入数据乱码问题

情景:从jsp通过表单传递数据到servlet中插入数据库
我检查了数据库的默认设置编码,以及jsp的encoding都是utf-8编码;都没发现有问题;
解决:最后在servlet里写入了

response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8"); 

成功解决,原因估计是表单传来的数据是utf-8的,但是servlet里取出来的时候不是按照utf-8解码的,导致传入到数据库里就是乱码,和数据库的编码没关系。

二、分页用的sublist

一开始模仿的写法是这个

 @Override
2 public List<Student> queryStudentsByArray(int currPage, int pageSize) {
3     List<Student> students = studentMapper.queryStudentsByArray();
4     // 从第几条数据开始
5     int firstIndex = (currPage - 1) * pageSize;
6     // 到第几条数据结束
7     int lastIndex = currPage * pageSize;
8     return students.subList(firstIndex, lastIndex);
9 }

但是这个代码有一个很坑人的bug。讲这个bug之前得讲一个东西:list是一个接口,Arraylist是实现了这个接口的具体子类.然后Arraylist的sublist返回的类型也叫list,但是坑人的地方开始了,这里返回的list是Arraylist里面的子类。所以如果你按照上面的去做就会返回错误的函数类型。(坑人博主,错误代码都发,祝你买菜涨价,超级加倍)最后解决方法就是再创建一个list(正确函数返回的list,接口的list),将返回的子类list付给list,这是可以的,因为list是Arraylist的接口。另一个list又是Arraylist的子类,所以是可以的。代码如下:

 List<book> subList =new ArrayList<book>(bookslist.subList(firstIndex, bookslist.size()));

我的完整函数代码

   //分页查询
    public static List<book> queryPage(int currPage,int pageSize) throws SQLException {
         List<book> bookslist = new ArrayList<book>();
         bookslist= query();
        
//4     // 从第几条数据开始
     int firstIndex = (currPage - 1) * pageSize;
//6     // 到第几条数据结束
     int lastIndex = currPage * pageSize;   
      if(bookslist.size()<lastIndex){
        List<book> subList =new ArrayList<book>(bookslist.subList(firstIndex, bookslist.size()));
        //bookslist.subList(firstIndex, lastIndex); 
     return subList;
      }
     List<book> subList =new ArrayList<book>(bookslist.subList(firstIndex, lastIndex));
             //bookslist.subList(firstIndex, lastIndex); 
     return subList;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值