前端静态页面+springboot(springboot后端thymeleaf页面静态化)
结构:
1.pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.like.demo</groupId>
<artifactId>like-test</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--pojo-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version> 1.18.8 </version>
</dependency>
<!--mybatis-plus dependency-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
//注意需要下面thymeleaf dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version> 5.1.46 </version>
</dependency>
</dependencies>
</project>
2.yml
server:
port: 9001
spring:
application:
name: test
#地址 后缀
thymeleaf:
prefix: "classpath:/static/"
suffix: ".html"
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/like_db?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql
3.注意resoure/static/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>静态页面的访问</title>
<style>
.liked {
background: deeppink;
}
</style>
</head>
<body>
静态页面
<a href="http://localhost:9001/like/list">点赞</a>
<a href="http://localhost:9001/like/list/20" class="liked">点赞</a>
</body>
<script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>
<script>
</script>
</html>
4.controller
package com.like.test.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.like.test.pojos.Like;
import com.like.test.service.LikeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@RequestMapping("like")
public class LikeController {
@Autowired
LikeService likeService;
@GetMapping("/list")
public String list() {
List<Like> list = likeService.list();
System.out.println("list = " + list);
return "index";
}
@PostMapping("/list")
@ResponseBody
public String list2() {
List<Like> list = likeService.list();
System.out.println("list = " + list);
return list.toString();
}
@GetMapping("/list/{like_count}")
@ResponseBody
public String listByLike_Count(@PathVariable Integer like_count) {
Like like = new Like();
like.setCommentId(11);
like.setLikeCount(like_count);
likeService.save(like);
List<Like> list = likeService.list();
return list.toString() + like_count.toString();
}
}
5.service
package com.like.test.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.like.test.pojos.Like;
public interface LikeService extends IService<Like> {
}
6.serviceImpl
package com.like.test.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.like.test.mapper.LikeMappper;
import com.like.test.pojos.Like;
import com.like.test.service.LikeService;
import org.springframework.stereotype.Service;
@Service
public class LikeServiceImpl extends ServiceImpl<LikeMappper, Like> implements LikeService {
}
7.mapper
package com.like.test.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.like.test.pojos.Like;
public interface LikeMappper extends BaseMapper<Like> {
}
8.pojos
package com.like.test.pojos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("tb_like")
public class Like implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("comment_id")
private Integer commentId;
@TableField("user_id")
private Integer userId;
@TableField("like_count")
private Integer likeCount;
public Integer getCommentId() {
return commentId;
}
public void setCommentId(Integer commentId) {
this.commentId = commentId;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getLikeCount() {
return likeCount;
}
public void setLikeCount(Integer likeCount) {
this.likeCount = likeCount;
}
}
package com.like.test.pojos;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("tb_user")
public class User implements Serializable {
@TableId
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
package com.like.test.pojos;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("tb_comment")
public class Comment implements Serializable {
@TableId
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
9.启动类
package com.like.test;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@MapperScan("com.like.test.mapper")
public class LikeApplication {
public static void main(String[] args) {
SpringApplication.run(LikeApplication.class);
}
/**
* mp分页插件*****
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
10.sql
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (1, 10, 100, 0);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (2, 11, null, 11);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (4, 11, null, 10);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (5, 11, null, 10);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (6, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (7, 11, null, 1);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (8, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (9, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (10, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (11, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (12, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (13, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (14, 11, null, 12);
INSERT INTO like_db.tb_like (id, comment_id, user_id, like_count) VALUES (15, 11, null, 20);
INSERT INTO like_db.tb_comment (id) VALUES (10);
INSERT INTO like_db.tb_user (id) VALUES (100);
INSERT INTO like_db.tb_user (id) VALUES (null);
总结:
1.依赖thmyself
2.yml里面配置位置
3.controller里面的要用@controller,可以返回页面,@restcontroller默认返回得是json到页面(数据),(restcontroller会报错)
用@controller时,类里面的方加@responseBaby就可以返回json
资源:
https://download.csdn.net/download/weixin_51297617/29113253