JdbcTemplate的queryForObject查询不到结果会抛异常:
login.jsp提交登录name和pwd到user/login的controller访问dao层的selectByNameAndPwd方法查询结果为空,就在dao层抛了异常所以服务器就报了500
解决方法:dao层向上抛异常,抛到service层try-catch处理:
dao
@Override
public User selectByNameAndPwd(String name, String password) throws EmptyResultDataAccessException {
return jdbcTemplate.queryForObject("select * from sys_user where name = ? and password = ?", new BeanPropertyRowMapper<User>(User.class),name,password);
}
service
@Override
public User login(String name, String password) {
try {
return userDao.selectByNameAndPwd(name, password);
}catch (EmptyResultDataAccessException e){
e.printStackTrace();
return null;
}
}
controller
@RequestMapping("/login")
public String login(String name, String password, HttpSession session){
User user = userService.login(name, password);
if (user!=null){
session.setAttribute("user",user);
return "redirect:/jsp/index.jsp";
}else{
return "redirect:/jsp/login.jsp";
}
}