Spring Boot入门

初始化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

你可能感兴趣的:(java)