基于SpringBoot框架的新闻后台管理系统01

初识SpringBoot

基础介绍

SpingBoot里的Spring是指Spring框架,Spring框架是由于软件开发的复杂性而创建的,而Boot是启动的意思,所以SpringBoot其实是一个启动Spring项目的一个工具,从根本上讲,SpringBoot就是一些库的集合,它能够被任意项目的构建系统所使用。

出现背景

长期以来 Java 的开发一直让人所诟病,面临着两个重要的难题:

  • Java项目开发复杂度极其高
  • Java 项目的维护非常困难

在这样的时代背景下,诞生了Sping框架,但是好景不长,人们发现,如果要想在 Spring 之中整合 RabbitMQ、Kafka、ActiveMQ、MySQL、Druid、Redis、Shiro等,需要编写一堆堆的xml 配置文件;所以在这样的一个大的历史背景下,很多人开始寻求更加简便的开发,而遗憾的是这种简便的开发没有被 JDK 所支持、没有被 JavaEE 所支持,因为这些只是平台,平台能够提供的只是最原始的技术支持。这一时刻终于由于 Spring 框架的升级而得到了新生,SpringBoot 的出现,改变了所有 Java 开发的困境,SpringBoot的最终奉行的宗旨:废除掉所有复杂的开发,废除掉所有的配置文件,让开发变得更简单纯粹,核心:零配置

优点

  • 使编码变得简单,SpringBoot采用 JavaConfig的方式,对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率。
  • 使配置变得简单,SpringBoot提供许多默认配置,当然也提供自定义配置,但是所有的SpringBoot的项目都只有一个配置文件:application.properties/application.yml。
  • 使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包,然后通过Java -jar xxx.jar来运行
  • 使监控变得简单,SpringBoot提供了actuator包,可以使用它来对应用进行监控。

新闻后台管理系统1.0

功能模块

在这里插入图片描述

实体及关系图

在这里插入图片描述

在这里插入图片描述
Type、Tag类比较简单就不做图介绍了。
在这里插入图片描述

本次项目内容

  • 创建项目,导入相关依赖,配置项目文件,引入页面文件
  • 实现登录功能和分类列表展示功能

项目开发过程

  • 创建项目
    在这里插入图片描述
    在这里插入图片描述
    然后一路next下去,创建整个项目。

  • 编辑pom.xml,导入相关依赖

  1. 我们只需要在pom.xml中编写需要引入的依赖,Maven会自动帮我们下载这些依赖包。我在这里直接放pom.xml的链接,读者需要下载并复制里面的内容,但是里面的groupId和artifactId需要替换为自己的。
    链接pom.xml
  2. 在完成pom.xml的编辑之后,我们需要点击Maven的刷新开始下载依赖包。
    在这里插入图片描述
  • 配置系统属性
  1. 将resources文件夹下的application.properties文件修改为application.yml文件,这次我们使用yml文件来配置各种系统属性。
  2. 填写各种系统属性
spring:
#datasoure里请填写自己的数据库信息
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3307/springboot?urlSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 1214

  jpa:
    hibernate:
      ddl-auto: update
      use-new-id-generator-mappings: false
    show-sql: true

  thymeleaf:
    mode: HTML
  profiles:
    active: dev

#port里请填写自己使用的Tomcat服务器端口号,默认为8080
server:
  port: 8081
  • 引入网页文件
  1. 网页文件已经有人帮助我们写好了,现在直接导入就行,毕竟本次项目主要是练习后端的实现,前端的知识并未涉及太多。
  2. 在resources文件夹下导入templates文件夹,这个文件夹内放的主要是构建网页的html文件。
    链接:templates文件夹
  3. 在resources文件夹下导入static文件夹,这个文件夹内放的主要是一些封装的页面组件和图片。
    链接:templates文件夹
  • 创建实体类
  1. 创建po包,PO的意思是指持久化对象,也就是数据持久层,在这个包内我们可以创建各种实体类,并且通过注释自动在数据库中创建相关表。
  2. 在po包下创建User类、Type类、News类,这里就不放类的内容了,实在是太多了,直接上链接。
    链接:实体类
  • 创建Repository接口
  1. 创建dao包,DAO的意思是数据访问对象,也就是数据访问层,在这个包里我们可以创建各种实体对应的Repository接口,并且使这个接口继承JpaRepository接口,在JpaRepository接口中定义了各种访问数据库的方法,于是各种实体便能利用他们的Repository接口完成对数据库的各种操作。
  2. 在dao包下创建UserRepository、TypeRepository接口,在这些接口中,我们并不需要去定义大量的方法,因为父接口JpaRepository中已经定义了大量的方法了。
public interface UserRepository extends JpaRepository<User, Long> {

    User findByUsernameAndPassword(String username, String password);
}
public interface TypeRepository extends JpaRepository<Type, Long> {
}
  • 创建Service类
  1. 创建service包,这是服务层,在这个包内我们可以创建各种实体对应的Service接口
  2. 在Service包下创建UserService、TypeService接口
public interface UserService {

    User checkUser(String username, String password);
}
public interface TypeService {

    Page<Type> listType(Pageable pageable);
}
  1. 在service包下创建impl包,在这个包内我们可以创建各种实体对应ServiceImpl类,并实现对应的Service接口。
  2. 在impl包下创建UserServiceImpl、TypeServiceImpl类
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public User checkUser(String username, String password) {
        return userRepository.findByUsernameAndPassword(username, password);
    }
}
@Service
public class TypeServiceImpl implements TypeService {

    @Autowired
    private TypeRepository typeRepository;

    @Override
    public Page<Type> listType(Pageable pageable) {
        return typeRepository.findAll(pageable);
    }
}
  • 创建Controller类
  1. 在web包下创建admin包,这个包是专门用来存放管理员使用的Controller类,在这个包内我们可以创建各种Controller类。
  2. 在admin包下,创建LoginController、TypeController类
@Controller
@RequestMapping("/admin")
public class LoginController {

    @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.checkUser(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";
    }
}
@Controller
@RequestMapping("/admin")
public class TypeController {

    @Autowired
    private TypeService typeService;

    @RequestMapping("/types")
    public String type(@PageableDefault(size = 5,sort = {"id"}, direction = Sort.Direction.DESC)Pageable pageable, Model model){

        model.addAttribute("page", typeService.listType(pageable));
        return "admin/types";
    }
}
  • 运行程序,添加数据库信息。因为User、Type、News类中的注解,程序运行后,数据库中会自动创建user表、type表、news表,为了后续的项目演示,我们需要在user表中至少添加一个用户信息,在type表中也添加一些类型信息。
    在这里插入图片描述
    在这里插入图片描述

  • 打开浏览器并在网址栏内输入"localhost:8081/admin",请将这里的8081替换你使用的端口号。因为SpringBoot项目使用的是内置的Tomcat服务器,它不会自动给我们打开后台页面,所以需要我们手动输入网址。

项目演示

  • 登录界面
    在这里插入图片描述
  • 主页
    在这里插入图片描述
  • 分类管理界面
    在这里插入图片描述

项目下载

链接news1

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值