【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

相关推荐
程序猿DD6 分钟前
Java 25 中的 6 个新特性解读
java·后端
稻草猫.9 分钟前
文件 IO
java·笔记·后端·java-ee·idea
laopeng30110 分钟前
基于Spring AI Deep Researcher Agent
java·人工智能·spring
掘金码甲哥12 分钟前
有关CORS跨域访问,这事没完
后端
子豪-中国机器人23 分钟前
《C++ STL 基础入门》教案
java·开发语言
java_t_t28 分钟前
集合工具类
java·集合
消失的旧时光-194333 分钟前
ScheduledExecutorService
android·java·开发语言
勇闯逆流河34 分钟前
【C++】用红黑树封装map与set
java·开发语言·数据结构·c++
码事漫谈1 小时前
从外行到AI指挥官:你必须掌握的五大「程序员思维」
后端
Moonbit1 小时前
MoonBit 开发者激励计划开启|赢取价值 $20 Copilot 月卡权益!
后端