【Spring Boot】SpringBoot完整实现社交网站系统

一个完整的社交网站系统需要涉及到用户登录、发布动态、关注、评论、私信等各方面。这里提供一个简单的实现示例,供参考。

  1. 前端代码

前端使用Vue框架,以下是部分代码示例:

登录页:

复制代码
`<template>
  <div>
    <input type="text" v-model="username">
    <input type="password" v-model="password">
    <button @click="login">登录</button>
  </div>
</template>

<script>
import axios from 'axios';
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    login() {
      axios.post('/api/login', {
        username: this.username,
        password: this.password
      }).then(res => {
        // 登录成功,跳转到首页
      });
    }
  }
}
</script>
`

首页:

复制代码
`<template>
  <div>
    <div v-for="post in posts" :key="post.id">
      <h3>{``{ post.title }}</h3>
      <p>{``{ post.content }}</p>
      <button @click="likePost(post)">赞</button>
      <button @click="comment(post)">评论</button>
    </div>
  </div>
</template>

<script>
import axios from 'axios';
export default {
  data() {
    return {
      posts: []
    }
  },
  methods: {
    getPosts() {
      axios.get('/api/posts').then(res => {
        this.posts = res.data;
      });
    },
    likePost(post) {
      // 点赞
    },
    comment(post) {
      // 评论
    }
  },
  mounted() {
    this.getPosts();
  }
}
</script>
`
  1. 后端代码

后端使用Spring Boot框架,以下是部分代码示例:

登录Controller:

复制代码
`@RestController
@RequestMapping("/api")
public class LoginController {
  @Autowired
  private UserService userService;

  @PostMapping("/login")
  public String login(@RequestBody User user) {
    if (userService.checkUser(user)) {
      return "success";
    } else {
      return "failure";
    }
  }
}
`

UserService类:

复制代码
`@Service
public class UserService {
  @Autowired
  private UserRepository userRepository;

  public boolean checkUser(User user) {
    User userInDb = userRepository.findByUsername(user.getUsername());
    if (userInDb != null && userInDb.getPassword().equals(user.getPassword())) {
      return true;
    } else {
      return false;
    }
  }
}
`

PostController类:

复制代码
`@RestController
@RequestMapping("/api")
public class PostController {
  @Autowired
  private PostService postService;

  @GetMapping("/posts")
  public List<Post> getPosts() {
    return postService.getAllPosts();
  }

  @PostMapping("/posts")
  public void addPost(@RequestBody Post post) {
    postService.addPost(post);
  }
}
`

PostService类:

复制代码
`@Service
public class PostService {
  @Autowired
  private PostRepository postRepository;

  public List<Post> getAllPosts() {
    return postRepository.findAll();
  }

  public void addPost(Post post) {
    postRepository.save(post);
  }
}
`

PostRepository类:

复制代码
`public interface PostRepository extends JpaRepository<Post, Long> {
}
`

UserRepository类:

复制代码
`public interface UserRepository extends JpaRepository<User, Long> {
  User findByUsername(String username);
}
`

Post类:

复制代码
java

`@Entity
public class Post {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String title;
  private String content;
  private LocalDateTime createTime;

  // 省略getter和setter方法,以及构造方法等
}
`

User类:

复制代码
java

`@Entity
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  private String username;
  private String password;

  // 省略getter和setter方法,以及构造方法等
}
`
  1. 数据库代码

使用MySQL数据库,以下是部分代码示例:

创建数据库:

复制代码

sql

复制代码
`CREATE DATABASE social;
`

创建用户表:

复制代码

sql

复制代码
``CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
``

创建动态表:

复制代码
sql

``CREATE TABLE `post` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `content` text,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
``

以上是简单的实现示例,实际社交网站系统需要考虑更复杂的业务逻辑和安全性问题。完整的实现可参考相关开源项目,例如:https://github.com/b3log/symphony

相关推荐
JuiceFS几秒前
卓驭:百 PB 级智驾数据存储架构演进
后端·自动驾驶
鱼弦2 分钟前
跨模态迁移的极限:语言模型的逻辑能力能否完全迁移到视觉?
后端
ModStart6 分钟前
写歌、翻唱、可编辑乐谱,YuE2-3B 在 AIGCPanel 一键跑通
后端
故作春风7 分钟前
elpis-core 核心从入门到理解
后端·架构·node.js
木白CPP14 分钟前
Linux DMA驱动详解(二)-----DMA的使用者
java·linux·运维
caoerzhong18 分钟前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
LEE20 分钟前
前端转型全栈 01:数据建模,前端最大的盲区
前端·javascript·后端
Sam_Deep_Thinking25 分钟前
单一职责原则:JAVA LocalDate的设计取舍
java·后端·程序员·单一职责原则
杨杨杨大侠33 分钟前
Java 不再需要 JVM?一文看懂 GraalVM Native Image、Substrate VM 与 JDK
java·jvm·java ee
GoGeekBaird35 分钟前
(万字长文拆解云沙箱)让 Agent 从执行代码升级到拥有一个临时Runtime
后端·agent