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对象
-
-
得到PageBean(里边有页面需要的所有数据)
-
把pageBean对象传递给list.jsp:让页面显示这些数据
-
-
在list.jsp里:
-
得到pageBean里的
List<User>
,循环遍历,显示到表格里 -
得到pageBean里的
pageCount
,循环显示pageCount个页码按钮 -
得到pageBean里的
pageNumber
,要把当前页码标示出来 -
提供一个“上一页”的按钮
-
如果当前页码 <= 1:“上一页”按钮,禁用,或者不显示
-
否则:写跳转的路径:当前页码 - 1
-
-
提供一个“下一页”的按钮
-
如果当前页码 >= 总页数:“下一页”按钮 禁用,或者不显示
-
否则:写跳转的路径:当前页码 + 1
-
-
-