当前位置:首页 >> 编程语言 >> 【Spring Boot】Spring Boot实现完整论坛功能示例代码,586w

【Spring Boot】Spring Boot实现完整论坛功能示例代码,586w

cpugpu芯片开发光刻机 编程语言 1
文件名:【Spring Boot】Spring Boot实现完整论坛功能示例代码,586w 【Spring Boot】Spring Boot实现完整论坛功能示例代码

以下是一个简单的Spring Boot论坛系统示例代码:

首先是数据库设计,我们创建以下几张表: user表,存储用户信息,包括id、username、password、email、create_time等字段。topic表,存储帖子信息,包括id、title、content、user_id、create_time等字段。comment表,存储评论信息,包括id、content、user_id、topic_id、create_time等字段。 创建实体类

2.1 User实体类:

@Entity@Table(name = "user")public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Columnprivate String username;@Columnprivate String password;@Columnprivate String email;@Column(name = "create_time")private Date createTime;// getter/setter省略}

2.2 Topic实体类:

@Entity@Table(name = "topic")public class Topic {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Columnprivate String title;@Columnprivate String content;@ManyToOne@JoinColumn(name = "user_id")private User user;@Column(name = "create_time")private Date createTime;// getter/setter省略}

2.3 Comment实体类:

@Entity@Table(name = "comment")public class Comment {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Columnprivate String content;@ManyToOne@JoinColumn(name = "user_id")private User user;@ManyToOne@JoinColumn(name = "topic_id")private Topic topic;@Column(name = "create_time")private Date createTime;// getter/setter省略} 创建Repository

3.1 UserRepository:

public interface UserRepository extends JpaRepository<User, Long> {User findByUsername(String username);}

3.2 TopicRepository:

public interface TopicRepository extends JpaRepository<Topic, Long> {}

3.3 CommentRepository:

public interface CommentRepository extends JpaRepository<Comment, Long> {} 创建Service

4.1 UserService:

@Servicepublic class UserService {@Autowiredprivate 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;}}public void saveUser(User user) {user.setCreateTime(new Date());userRepository.save(user);}public User getUserById(Long id) {return userRepository.findById(id).orElse(null);}}

4.2 TopicService:

@Servicepublic class TopicService {@Autowiredprivate TopicRepository topicRepository;public List<Topic> getAllTopics() {return topicRepository.findAll();}public Topic getTopicById(Long id) {return topicRepository.findById(id).orElse(null);}public void saveTopic(Topic topic) {topic.setCreateTime(new Date());topicRepository.save(topic);}}

4.3 CommentService:

@Servicepublic class CommentService {@Autowiredprivate CommentRepository commentRepository;public void saveComment(Comment comment) {comment.setCreateTime(new Date());commentRepository.save(comment);}public List<Comment> getCommentsByTopicId(Long topicId) {return commentRepository.findAllByTopicId(topicId);}} 创建Controller

5.1 UserController:

@Controllerpublic class UserController {@Autowiredprivate UserService userService;@GetMapping("/login")public String login() {return "login";}@PostMapping("/login")public String doLogin(User user, HttpSession session) {boolean result = userService.checkUser(user);if (result) {session.setAttribute("user", user);return "redirect:/";} else {return "login";}}@GetMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("user");return "redirect:/";}@GetMapping("/register")public String register() {return "register";}@PostMapping("/register")public String doRegister(User user) {userService.saveUser(user);return "redirect:/login";}}

5.2 TopicController:

@Controllerpublic class TopicController {@Autowiredprivate TopicService topicService;@Autowiredprivate CommentService commentService;@GetMapping("/")public String index(Model model) {List<Topic> topics = topicService.getAllTopics();model.addAttribute("topics", topics);return "index";}@GetMapping("/topic/{id}")public String topic(@PathVariable Long id, Model model) {Topic topic = topicService.getTopicById(id);List<Comment> comments = commentService.getCommentsByTopicId(id);model.addAttribute("topic", topic);model.addAttribute("comments", comments);return "topic";}@GetMapping("/new-topic")public String newTopic() {return "new-topic";}@PostMapping("/new-topic")public String doNewTopic(Topic topic, HttpSession session) {User user = (User) session.getAttribute("user");topic.setUser(user);topicService.saveTopic(topic);return "redirect:/";}}

5.3 CommentController:

@Controllerpublic class CommentController {@Autowiredprivate CommentService commentService;@PostMapping("/new-comment")public String doNewComment(Comment comment, HttpSession session) {User user = (User) session.getAttribute("user");comment.setUser(user);commentService.saveComment(comment);return "redirect:/topic/" + comment.getTopic().getId();}}

创建视图页面

6.1 index.html:

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>论坛首页</title></head><body><h1>论坛首页</h1><div><a href="/new-topic">发表新帖</a></div><ul><li th:each="topic : ${topics}"><a th:href="@{'/topic/' + ${topic.id}}"><h3 th:text="${topic.title}"></h3></a><p th:text="${topic.content}"></p><p><span th:text="${topic.user.username}"></span><span th:text="${#dates.format(topic.createTime, 'yyyy-MM-dd HH:mm:ss')}"></span></p></li></ul></body></html>

6.2 topic.html:

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>话题详情</title></head><body><h1 th:text="${topic.title}"></h1><p th:text="${topic.content}"></p><p><span th:text="${topic.user.username}"></span><span th:text="${#dates.format(topic.createTime, 'yyyy-MM-dd HH:mm:ss')}"></span></p><hr><h2>评论</h2><ul><li th:each="comment : ${comments}"><p th:text="${comment.content}"></p><p><span th:text="${comment.user.username}"></span><span th:text="${#dates.format(comment.createTime, 'yyyy-MM-dd HH:mm:ss')}"></span></p></li></ul><hr><form action="/new-comment" method="post"><input type="hidden" name="topic.id" th:value="${topic.id}"><textarea name="content"></textarea><br><button type="submit">提交评论</button></form></body></html>

6.3 new-topic.html:

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>发表新帖</title></head><body><h1>发表新帖</h1><form action="/new-topic" method="post"><input type="text" name="title"><br><textarea name="content"></textarea><br><button type="submit">发布帖子</button></form></body></html>

6.4 login.html:

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>登录</title></head><body><h1>登录</h1><form action="/login" method="post"><input type="text" name="username">

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接