初始化

  1. 创建项目,勾选 web/spring web 的 module
  2. 添加 Controller 包
  3. 添加 Controller.HelloContorller 类
package com.example.controller;  
  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class HelloController {  
    @RequestMapping("/hello")  
    public String hello() {  
        System.out.println("hello world");  
        return "hello world";
    }
}

注解:@RestController 请求处理类

@RequestMapping 请求处理方法

SpringBoot 起步依赖:

  1. spring-boot-starter-web
  2. spring-boot-starter-test

JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF

请求响应

简单参数

  1. 原始方式获取请求参数 Controller方法形参中声明HttpServletRequest对象 调用对象的getParameter(参数名)
    @RequestMapping("/test")
    public String simpleParam(HttpServletRequest request) {
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");
        int age = Integer.parseInt(ageStr);
        System.out.println(name + " " + age);
        return "OK";
    }
  1. SpringBoot中接收简单参数 请求参数名与方法形参变量名相同 会自动进行类型转换
    @RequestMapping("/test")
    public String simpleParam(String name, Integer age) {
        System.out.println(name + " " + age);
        return "OK";
    }
  1. @RequestParam注解 方法形参名称与请求参数名称不匹配,通过该注解完成映射 该注解的require属性默认是true,代表请求参数必须传递

实体参数

简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可

数组参数

数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系

日期参数

日期参数:使用@DateTimeFormat注解完成日期参数格式转换

JSON 参数

JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识

路径参数

路径参数:通过请求URL直接传递参数,使用{..来标识该路径参数,需要使用@PathVariable获取路径参数

统一响应

@ResponseBody

类型:方法注解、类注解

位置:Controller方法上/类上

作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应

说明:@RestController=@Controller+@ResponseBody;

Springboot项目的静态资源(html,css,js等前端资源)默认存放目录为:classpath:/static、classpath:/public、classpath:/resources

分层解耦

三层架构

dao、service、controller 层

IOC 和 DI

控制反转:InversionOfControl,简称iOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。

依赖注入:DependencyInjection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。

Bean对象:IOC容器中创建、管理的对象,称之为bean。

注解

  • @Coraponent 声明bean的基础注解不属于以下三类时,用此注解
  • @Controller @Component的衍生注解标注在控制器类上
  • @Service @Component的衍生注解标注在业务类上
  • @Repository @Component的衍生注解标注在数据访问类上(由于与mybatis整合,用的少)

没有指定,默认为类名首字母小写。使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。

Bean组件扫描

前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。

@ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包。

Bean 注入

按照类型注入,如果类型重复,有三种解决方案:

  • @Primary 添加在 @Component 前
  • @Qualifier("") 添加在 @AutoWired 后
  • @Resource(name="") 替换 @AutoWired