分页查询
CURD-
1. 添加用户
- 表单项的name,JavaBean的属性名,数据库表的字段名,建议保持一致
- 注意:提交的表单中有中文,要解决中文参数乱码问题
- Servlet里,要把map封装到一个JavaBean对象里:
BeanUtils.populate(bean, map)
- 尽量少写重复代码(尽量调用已有的代码)
2. 修改用户
2.1 查询并显示用户信息
- 页面里发请求时传参:
路径?name=value&name=value&......
JDBCTemplate的
queryForObject
得到一个JavaBean对象。如果找不到数据,会抛异常:需要try…catch…- 大部分异常,如果不知道怎样处理,就可以抛。有少数特殊的:
queryForObject
:需要捕获到EmptyResultDataAccesccExcpetion
- 在Servlet里的异常:需要捕获,否则就把异常抛给了Tomcat服务器
- 事务处理过程中,如果有异常:需要捕获,之后要进行事务回滚
2.2 修改用户信息
- 修改用户信息的表单里,必须有一个隐藏域:用户的id。作为update语句的where条件使用的
3. 删除用户
- 删除之前,需要先弹窗确认。确定要删除之后,再发送删除的请求
forEach
标签的var定义的变量,只能在循环内部使用
4. 分页查询
4.1 所有查询功能的共同思路
- 确定页面上要什么数据
准备页面需要的数据:在服务端准备的
- 确定要执行的SQL语句
- 根据SQL语句判断,客户端发请求时需要传递的参数
整理整体的实现思路
- 页面发请求,传参到Servlet
Servlet里接收参数:
调用service,准备页面需要的数据
- 如果数据比较多,就可以封装到一个JavaBean/Map里
- 返回给Servlet封装后的结果
- 得到结果,把结果传递给页面
- 页面里接收并显示结果数据
4.2 分页查询用户信息
确定页面上要什么数据:
- 页码对应的用户列表:
List<User>
,用来显示给用户查看的 - 当前页码是几:用于标示出来当前页码按钮的
- 总共多少页:用于确定要显示多少个页码按钮的
- 页码对应的用户列表:
准备页面需要的数据:在服务端service里准备的
List<User
:select * from tab_user limit 起始索引?, 查询数量?
- 需要页面传递页码:根据页码,计算出来起始索引
- 需要页面传递每页几条:
- 当前页码:需要页面传参
总共多少页:
- 计算公式:
pageCount = Math.ceil(totalCount * 1.0/pageSize)
- 需要页面传参每页几条:pageSize
- 需要从数据库里查询总数量:totalCount
- 计算公式:
最终确定,要准备页面需要的数据,只需要页面传递两个参数:
- pageNumber:当前页码
- pageSize:每页几条(如果页面不传,可以给一个默认值)
编写代码的整体思路
- 页面发请求到Servlet,并且传参:pageNumber、pageSize
在Servlet里:
- 接收参数
调用service,让service准备页面需要的三项数据
- service里准备页面需要的三项数据:
List<User>
,pageNumber
,pageCount
- 把三项数据,封装到一个PageBean对象里
- 返回pageBean对象
- service里准备页面需要的三项数据:
- 得到PageBean(里边有页面需要的所有数据)
- 把pageBean对象传递给list.jsp:让页面显示这些数据
在list.jsp里:
- 得到pageBean里的
List<User>
,循环遍历,显示到表格里 - 得到pageBean里的
pageCount
,循环显示pageCount个页码按钮 - 得到pageBean里的
pageNumber
,要把当前页码标示出来 提供一个“上一页”的按钮
- 如果当前页码 <= 1:“上一页”按钮,禁用,或者不显示
- 否则:写跳转的路径:当前页码 - 1
提供一个“下一页”的按钮
- 如果当前页码 >= 总页数:“下一页”按钮 禁用,或者不显示
- 否则:写跳转的路径:当前页码 + 1
- 得到pageBean里的
还没有评论,来说两句吧...