1、新建项目
由于自己的IDEA是社区版的,因此先建立一个maven项目,然后手工加入springboot的pom依赖。
设置组织名和项目名。
建好项目后,先设置默认文件编码为utf-8和maven仓库位置。
把需要的文件夹建好。
2、pom文件和热部署
2.1 依赖
<?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>FH_TL1</groupId> <artifactId>SvmDemo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <dependencies> <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> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>2.1.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.0.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
spring-boot-starter-thymeleaf是使用thymeleaf模板需要的依赖。
2.2 热部署
使用热部署的话需要spring-boot-devtools依赖,IDEA默认是关闭热部署的,因此在配置了依赖后可以手动或自动2种方式使用:
1、手动方式:Crtl + F9快捷键,在修改了html等脚本后,使用这个快捷键编译。感觉还是手动好用吧,不用想着页面没变化是不是因为没有刷新成功。
2、自动方式:按Crtl + Shift + Alt + /快捷键,再进入Registry,勾选compiler.automake.allow.when.app.running,然后Build->Compiler勾选Build Project automatically。最后重启下IDEA就可以了。
3、配置文件
application.yml:
spring:
profiles:
active: dev
application-dev.yml:
server: port: 8080 spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/svm?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver thymeleaf: cache: false prefix: classpath:/templates/ suffix: .html encoding: UTF-8 content-type: text/html mode: HTML5 mybatis: #mapper-locations: classpath:mapping/*Mapper.xml type-aliases-package: com.yue.entity
这是在项目中配置多套环境的配置方法。application.yml设置使用哪套环境,每个环境设置自己的参数配置。在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如application-dev.yml。
com.mysql.cj.jdbc.Driver是jdbc最新的驱动,原驱动也能用但会报一个错误。
mybatis使用注解式的话需要注释掉mapper-locations,type-aliases-package是实体类的包,使用这个可以把这个包内的实体类用简单名称表示。
4、建立数据库表
把数据库中的表建好。
CREATE TABLE user( id INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL UNIQUE, age INTEGER )
插入数据。
5、后台实现
5.1 实体类
User.java:
package com.yue.entity; public class User { private int id; private String name; private String age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age='" + age + '\'' + '}'; } }
5.2 启动Main函数
AppMain.java:
package com.yue; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.yue.mapper") public class AppMain { public static void main(String[] args) { SpringApplication.run(AppMain.class); } }
@SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan。
5.3 controller类
Forward.java:
package com.yue.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/") public class Forward { @RequestMapping("/index") public String index() { return "/index"; } }
页面上请求http://localhost:8080/index后跳到这个方法,然后跳转到对应的index.html页面。
Query.java:
1 package com.yue.controller; 2 3 import com.yue.entity.User; 4 import com.yue.service.impl.QueryService; 5 import org.apache.ibatis.annotations.Param; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RestController; 9 10 @RestController 11 @RequestMapping("/") 12 public class Query { 13 14 @Autowired 15 private QueryService queryService; 16 17 @RequestMapping("/getUser") 18 public User getUser(@Param("id") String id) { 19 User user = queryService.getName(1); 20 return user; 21 } 22 23 }
前端传入id值后,后端返回user数据。
@RestController = @Controller + @ResponseBody,@Controller标注这是一个控制器类,@ResponseBody是把返回的数据转成json格式返回。
@RequestMapping是请求的路径。
@Param是前端传入的参数
@Autowired是自动注入,可以注入被@Service、@Controller、@Repository、@Component注解的类:
1、@Service:用于标注业务层组件。
2、@Controller:用于标注控制层组件。
3、@Repository:用于标注数据访问组件,即DAO组件。
4、@Component:泛指组件,当组件不好归类的时候,可以使用这个注解进行标注。
5.4 Service类
BaseService.java:
1 package com.yue.service; 2 3 public class BaseService {}
基础类,用于放置公共方法,哪怕没有一个方法也要放上去,之后方便加入。
QueryService.java:
1 package com.yue.service.impl; 2 3 import com.yue.entity.User; 4 import com.yue.mapper.QueryMapper; 5 import com.yue.service.BaseService; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Service; 8 9 @Service 10 public class QueryService extends BaseService { 11 @Autowired 12 private QueryMapper queryMapper; 13 14 public User getName(int id){ 15 return queryMapper.queryUser(id); 16 } 17 }
5.5 Mapper类
QueryMapper.java:
1 package com.yue.mapper; 2 3 import com.yue.entity.User; 4 import org.apache.ibatis.annotations.Select; 5 import org.springframework.stereotype.Repository; 6 7 @Repository 8 public interface QueryMapper { 9 10 @Select("SELECT * FROM user WHERE id = #{id}") 11 User queryUser(int id); 12 }
使用注解的方式实现mybatis。
6、前端实现
6.1 html页面
index.html:
1 <!DOCTYPE HTML> 2 <html xmlns="http://www.w3.org/1999/xhtml" 3 xmlns:th="http://www.thymeleaf.org"> 4 <head> 5 <meta charset="utf-8"/> 6 <title>测试网站</title> 7 <link th:href="@{/css/index.css}" rel="stylesheet" type="text/css"/> 8 <script type="text/javascript" th:src="@{/js/jquery.js}"></script> 9 <script type="text/javascript" th:src="@{/js/index.js}"></script> 10 </head> 11 <body> 12 <p> 13 <label class="name">用户id:</label> 14 <input placeholder="输入id" type="text" class="text-box" id="id"/> 15 <button id="aa">按钮</button> 16 </p> 17 </body> 18 </html>
需要加入xmlns:th="http://www.thymeleaf.org"命名空间,说明使用thymeleaf模板。
6.2 css实现
index.css:
1 p,label{ 2 color: green; 3 }
6.3 js实现
1 $(document).ready(function(){ 2 $("button#aa").click(function(){ 3 //var jsonObj = {id: $("#id").val(),name:"abcd",age:"123"}; 4 $.ajax({ 5 async : false, 6 url: "/getUser", 7 data:{ 8 id:$("#id").val() 9 }, 10 //data:JSON.stringify(jsonObj), 传入json数据 11 type: "POST", 12 dataType:"json",//返回数据类型 13 //headers:{"Content-Type":"application/json"}, 传入json数据时需设置请求头 14 success:function(data){ 15 alert(data.name); 16 }, 17 error:function(err){ 18 alert('连接失败'); 19 } 20 }); 21 }); 22 });
7、使用效果
网页请求http://localhost:8080/index。
点击按钮: