SpringBoot项目---功能完善

SpringBoot项目—功能完善

1.在DAO实现类里,selectUserById(Integer id)这个方法还有另一种写法

@Override
public Users selectUserById(Integer id) {
    String sql = "select * from users where userid = ?";
    return jdbcTemplate.queryForObject(sql, Users.class, id);
}

这里的queryForObject(sql, Users.class, id)方法,参数是sql语句、需要的Object对象类别、sql语句中?要传入的参数名

同样是在DAO实现类里得到selectUsersAll()方法,不能写成

@Override
public List<Users> selectUsersAll(){
    String sql = "select * from users";
    return jdbcTemplate.queryForList(sql, Users.class);
}

原因是queryForList(sql,class)方法里的class只能是单数据类型,也就是我们说的Integer、String、Double、Float等,不能是自己定义的类

2.在Controller类里会抛异常,由于这个类里有许多方法,所以可以把异常拿出来,单独封装为一个方法

@ExceptionHandler(Exception.class)
public String handleException(Exception e){
    e.printStackTrace();
    return "error";
}

这里要注意@ExceptionHandler(Exception.class)注解

return就是返回指定错误页面

3.关于页面跳转

return "forward:/user/findUserAll";

一定是请求转发或者重定向,标注好

路径名也要按照mapping()映射的路径写全

对数据进行修改、删除、添加操作的时候,应该用response.sendRedirect()。如果是采用了request.getRequestDispatcher().forward(request,response),那么操作前后的地址栏都不会发生改变,仍然是修改的控制器,如果此时再对当前页面刷新的话,就会重新发送一次请求对数据进行修改,这也就是有的人在刷新一次页面就增加一条数据的原因

@PostMapping("/addUser")
public String showInfo(Users users){
        this.userService.addUser(users);
    return "redirect:/user/findUserAll";
}


@GetMapping("/findUserAll")
public String findUserAll(Model model){
    List<Users> list = null;
        list = this.userService.findUsersAll();
        model.addAttribute("list",list);
    return "showUsers";
}


@GetMapping("/preUpdateUser")
public String preUpdateUser(Integer id,Model model){
        Users user = this.userService.findUserById(id);
        model.addAttribute("user",user);
    return "updateUser";
}

@PostMapping("/updateUser")
public String updateUser(Users users){
        this.userService.modifyUser(users);
    return "redirect:/user/findUserAll";
}

这里会发现@PostMapping如果要跳转到@GetMapping的URL,就需要重定向

所以可以把注解改为@RequestMapping

如果页面HTML中表单提交方式为post,那么对应的controller类中的方法就只能是@PostMapping或者@RequestMapping

请求转发方式解析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ba0VJko1-1590455546258)(E:\李小兔的Java总结\get请求转发.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pylPtJPk-1590455546260)(E:\李小兔的Java总结\post请求转发.png)]

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @PostMapping("/addUser")
    public String showInfo(Users users){
            this.userService.addUser(users);
        return "redirect:/user/findUserAll";
    }


    @RequestMapping("/findUserAll")//这里改成@RequestMapping,后边就可以通过forward请求转发方式来实现跳转了
    public String findUserAll(Model model){
        List<Users> list = null;
            list = this.userService.findUsersAll();
            model.addAttribute("list",list);
        return "showUsers";
    }


    @GetMapping("/preUpdateUser")
    public String preUpdateUser(Integer id,Model model){
            Users user = this.userService.findUserById(id);
            model.addAttribute("user",user);
        return "updateUser";
    }

    @PostMapping("/updateUser")
    public String updateUser(Users users){
            this.userService.modifyUser(users);
        return "forward:/user/findUserAll";//通过forward请求转发方式跳转
    }

    @GetMapping("/deleteUser")
    public String deleteUser(Integer id){
            this.userService.dropUser(id);
        return "forward:/user/findUserAll";//通过forward请求转发方式跳转
    }


    @ExceptionHandler(Exception.class)
    public String handleException(Exception e){
        e.printStackTrace();
        return "error";
    }
}

重定向方式解析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tHSPP9D5-1590455546261)(E:\李小兔的Java总结\重定向.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值