【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

相关推荐
逆境不可逃3 分钟前
Hello-Agents 第二部分-第六章:框架开发实践
java·人工智能·分布式·学习·架构·rabbitmq
我不是8神10 分钟前
面试题:Gorutine泄露的条件有哪些?
java·开发语言
爱好物理的一名程序员XiaoK12 分钟前
搭建网站时遇到的只显示空白界面
java
AC赳赳老秦12 分钟前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
大熊程序猿13 分钟前
ASP.NET Core 认证授权:JWT与OAuth2实战
后端·asp.net
吴声子夜歌22 分钟前
状态机——枚举实现简单状态机
java·枚举·状态机
Rick199325 分钟前
【无标题】
java
yoyo_zzm25 分钟前
四大编程技术对比:PHP、Java、Python与HTML
java·python·php
zhangxingchao31 分钟前
AI应用开发五:RAG高级技术与调优
前端·人工智能·后端