SpringBoot项目的实体设计与用户登录实现以及类别分页展示功能

1、实体设计

①、首先要实现用户登录功能就必须要有保存用户信息的实体,创建为User类,类中包括ID,姓名,密码,邮箱等一系列用户应该有的基本元素。

②、不同的用户应该具有不同的权限,所以应该再创建一个保存用户类别的Type类,类中包括用户的信息和其对应的身份信息元素。

③、因为本项目是以新闻web为主体,所以创建一个新闻news类,类中包括标题,内容简介,首图,浏览次数等等一系列基本元素。

2、用户登录的实现

①、创建用户存储接口继承自JpaRepository<User,Long>,定义对用户账号与密码的查找方法头

public interface UserRepository extends JpaRepository<User,Long> {

    User findByUsernameAndPassword(String username,String password);
}

②、在用户服务接口中同样定义一个检测用户账号密码的方法头

User checkUsers(String username, String password);

③、创建实现用户服务接口的方法类,对检测用户账号密码的方法进行实现

    @Override
    public User checkUsers(String username,String password){
        return userRepository.findByUsernameAndPassword(username,password);
    }

④、创建登录控制器实现用户登录逻辑

    @Autowired
    private UserService userService;
    @GetMapping
    public String loginPage(){
        return "admin/login";
    }
    @PostMapping("/login")
    public String login(@RequestParam String username, @RequestParam String password, HttpSession session, RedirectAttributes attributes){
        User user=userService.checkUsers(username, password);
        if (user!=null){
            user.setPassword(null);
            session.setAttribute("user",user);
            return "admin/index";
        }else {
            attributes.addFlashAttribute("message","用户名或密码错误");
            return "redirect:/admin";
        }
    }

    @GetMapping("/logout")
    public String logout(HttpSession session){
        session.removeAttribute("user");
        return "redirect:/admin";
    }

3、类别分页展示

①、创建继承自JpaRepository<Type,Long>的类别接口,内容暂时为空。

public interface TypeRepository extends JpaRepository<Type,Long> {
}

②、在type服务接口中定义一个进行分页展示的方法头

Page<Type> listType(Pageable pageable);

③、创建实现type服务接口的方法类,实现分页展示

    @Autowired
    private TypeRepository typeRepository;
    @Override
    public Page<Type> listType(Pageable pageable) {
        return typeRepository.findAll(pageable);
    }

④、创建type控制器实现分页逻辑

    @Autowired
    private TypeService typeService;
    @RequestMapping("/types")
    public String type(@PageableDefault(size = 3,sort = {"id"},direction = Sort.Direction.DESC)
                               Pageable pageable, Model model){
        model.addAttribute("page",typeService.listType(pageable));
        return "admin/types";
    }

 

 

posted @ 2020-07-27 16:31  Dragon_xl  阅读(589)  评论(0)    收藏  举报