目录
用户登录成功之后,需要使用重定向来进行跳转,不能使用转发跳转
数据库中,如果主键是自增长的,在插入数据时,主键的位置填入null即可。
-
验证码必须放到session中
- 不能放到request中,因为请求验证码和请求页面是两次请求
-
快速封装参数为对象
-
request.setCharacterEncoding("utf-8"); Map<String, String[]> map = request.getParameterMap(); User user = new User(); try { BeanUtils.populate(user,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }request.setCharacterEncoding("utf-8"); Map<String, String[]> map = request.getParameterMap(); User user = new User(); try { BeanUtils.populate(user,map); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }
-
-
用户登录成功之后,需要使用重定向来进行跳转,不能使用转发跳转
- 暂时不知道为什么,就先记住好了
-
没有在request中存储数据,跳转时就应该使用重定向
-
数据库中,如果主键是自增长的,在插入数据时,主键的位置填入null即可。
-
阻止表单提交注意事项
- onsubmit属性要写在form标签上
- οnsubmit="return checkSubmit()"
- 需要写return
-
分页
-
分页好处
- 减轻服务器内存开销
-
输入
- currentPage
- 当前页面号
- rows
- 一次查询的记录数
- currentPage
-
输出
- pageBean对象
-
分页查询sql语句
- totalCount = select count(id) from user
- list = select * from user limit ? , ?
- ?:起始查询的位置
- ?:一次查询的数量
-
-
PageBean
-
概念
- 用来封装分页所需要的数据
-
成员变量
- int currentPage
- int rows
- List<T> list
- 需要使用范型,这样可以兼容数据库中不同的表
- int totalCount
- int total page
-
-
jdbcTemplate查询语句分类
- List<User> users = jdbcTemplate.query(sql , new BeanPropertyRowMapper<User>(User.calss))
- 查询结果有多条
- 每条记录都封装到user对象中,然后再存到list集合中
- User user = jdbcTemplate.queryForObject(sql , new BeanPropertyRowMapper<User>(User.class) , username , password)
- 查询结果有一条
- 查询结果封装到user对象中
- int totalCount = jdbcTemplateForObject(sql , Integer.class)
- 查询结果为表中记录条数
- List<User> users = jdbcTemplate.query(sql , new BeanPropertyRowMapper<User>(User.calss))
-
多条件组合查询
-
sql语句拼接技巧
- sql = "select * from user where 1 =1 "
- sql.append(" and key like %value% ")
-
public List<User> findUserByPage(int start, int rows,Map<String, String[]> parameterMap) { //创建SQL语句的基础 StringBuilder sql = new StringBuilder("select * from user where 1=1 "); Set<String> keySet = parameterMap.keySet(); ArrayList<Object> values = new ArrayList<>();//用来存储map中的值 for (String key : keySet) { if ("currentPage".equals(key) || "rows".equals(key)) {//把无关的参数去掉 continue; } sql.append(" and " + key + " like ? "); values.add("%"+parameterMap.get(key)[0]+"%");//把参数的值也存起来 } sql.append(" limit ? , ? "); values.add(start); values.add(rows); //query方法中接受sql语句的使用的可变参数,所以可以将arrayList转化为数组传进去 List<User> users = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<User>(User.class), values.toArray()); return users; }
-