初始化Spring Boot项目
1、创建Spring initializr项目,建controller类,添@RestController注解
http://start.spring.io 貌似可能才能访问
2、启动web容器的三种方式:
1)IDEA启动;
2)进入项目文件,使用mvn spring-boot:run启动;
3)进入项目文件,编译:mvn install 后,使用cd target命令进入目录,找到jar文件,使用java –jar jar文件名启动;
3.项目结构
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
pom.xml:Maven构建说明文件。
Application.java:一个带有main()方法的类,用于启动应用程序(关键)。
ApplicationTests.java:一个空的Junit测试类,它加载了一个使用SpringBoot字典配置功能的Spring应用程序上下文。
application.properties:一个空的properties文件,你可以根据需要添加配置属性。
Spring Boot父级依赖
org.springframework.boot
spring-boot-starter-parent
1.5.1.RELEASE
官方简单示例
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
YAML文件
相比.properties格式,可能YAML格式看起来条理更清晰,也更有层次感。Spring Boot本身就支持YAML格式的应用配置文件,因此,你可以创建文件application.yml。
前面刚提到的两项配置,写成YAML是:
server:
port: 8001
spring:
thymeleaf:
mode: LEGACYHTML5
Spring MVC有关的用法笔记
返回一般数据的controller
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method=RequestMethod.GET)
public String getMethod() {
return "get";
}
@RequestMapping(value="/hey", method=RequestMethod.POST)
public String postMethod2() {
return "hey post";
}
}
除了返回视图,某些controller可能是用来返回一般数据(例如json格式数据),比较像API。@RestController标记的类就是一个API风格的controller,其内部所有指定了访问地址的方法,都将返回一般数据。一般来说,Ajax请求很适合和这样的controller搭配。
如果在返回视图的@Controller标记的类里也希望某单个方法返回一般数据,在这个方法前一行单独添加注解@ResponseBody即可。
@RequestMapping的value指定路径,method指定HTTP访问方法。
controller中获取请求参数
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/{id}/{name}", method=RequestMethod.GET)
public void getMethod(@PathVariable int id, @PathVariable String name) {
System.out.println("id=" + id + ", name=" + name);
}
}
这样@PathVariable搭配{...},就从路径分别获取了id和name两个变量值。
此外, 一次请求的GET参数(位于URL的?后的内容)或POST参数(作为请求的Request Body),都可以用request.getParameter()取到
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method=RequestMethod.POST)
public void getMethod(HttpServletRequest request) {
System.out.println("userName=" + request.getParameter("userName"));
}
}
如果用Ajax向controller发送json字符串数据,controller这边获取起来要麻烦一些,大致像下面这样。
例如,Ajax发送的内容是(注意需要指定内容格式为json):
var person = {
name: "Rin",
age: 17
},
promise = $.ajax{
url: "/hello/submit",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(person)
};
然后接收的这边需要先准备好一个同样结构的类,如Person.java:
public class Person {
private String name;
private int age;
// getters & setters ...
}
然后controller里用带@RequestBody标记的参数就可以获取到:
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/submit", method=RequestMethod.POST)
public void submit(@RequestBody Person person) {
System.out.println("person.name=" + person.getName());
}
}
如果json数据结构和数据类不能完全匹配,controller将返回415错误(不支持的媒体类型)
引用参考以下文章:
Spring Boot干货系列:(三)启动原理解析http://tengj.top/2017/03/09/s...
慕课网2小时学会spring boot系列:http://www.imooc.com/learn/767