Spring Boot 知识笔记(创建maven项目、HTTP接口)

一、使用Maven手工创建SpringBoot应用(IDEA)

1、  点击File——New——Project——Maven——Next,填写相关信息,创建项目。

2、  在pom.xml中添加相关依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.M2</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.2.0.M1</version>
    </dependency>
</dependencies>

3、  在java目录下新建包、新建一个类(不能直接在java文件夹下新建类运行)

package net.xdclass.demo.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;



@RestController
public class SampleController {
   @RequestMapping("/")
   String home(){
      return "Hello World!";
   }
   public static void main(String[] args) throws Exception{
      SpringApplication.run(SampleController.class,args);
   }
   
}

4、 点击运行,没有报错,则说明正常启动

 5、浏览器访问本地tomcat 8080端口,Hello World就出来了

 6、遇到的报错

引用RequestMapping报错,原因是缺少jar包,解决办法是在pom文件里面添加下面依赖。

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.2.0.M1</version>
    </dependency>

二、使用构建工具自动生成项目基本架构

1、 工具地址:http://start.spring.io/,选择、填写相关信息

2、创建、下载demo包,导入IDEA即可

 三、HTTP请求接口

1、Spring Boot启动类

@SpringBootApplication    //@SpringBootApplication = @Configuration+@EnableAutoConfiguration+@ComponentScan
@Configuration
@ServletComponentScan
public class DemoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication .class);
    }
    public static void main(String[] args){

        SpringApplication.run(DemoApplication .class,args);
    }
}

2、Http Get请求

package net.xdclass.demo.controller;

import org.springframework.web.bind.annotation.*;
import net.xdclass.demo.domain.User;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;

/**
 * 测试http协议的get请求
 */
@RestController    //@RestController = @Controller+@ResponseBody      @Controller处理用户的http请求。@ResponseBody 是把返回的数据转成json格式
public class Getcontroller {
    private Map<String ,Object> params = new HashMap<>();
    @GetMapping(path = "/v0/{city_id}/{user_id}")
    public Object findUser(@PathVariable("city_id") String cityId,@PathVariable("user_id") String userId){
        params.put("cityId",cityId);
        params.put("userId",userId);
        return params;
    }


    /**
     * 测试GetMapping
     * @param from
     * @param size
     * @return
     */
    @GetMapping(value = "/v1/page_user1")
    public Object pageUser(int from,int size){
        params.clear();
        params.put("from",from);
        params.put("szie",size);
        return params;
    }
    @GetMapping(value = "/v1/page_user2")  //GetMapping相当于RequestMapping+method(get)的封装
    public Object pageUserV2(@RequestParam(defaultValue = "0",name = "page") int from,int size){ //page的值映射到from里面了。
        params.clear();
        params.put("from",from);
        params.put("szie",size);
        return params;
    }

    /**
     * 功能描述:bean对象传参
     * 注意:1、注意需要指定http头为 content-type为application/json
     *         2、使用body传输数据
     * @param user
     * @return
     */
    @RequestMapping(value = "/v1/save_user",method = RequestMethod.POST)
    public Object saveUser(@RequestBody User user){
        params.clear();
        params.put("user",user);
        return params;
    }
    /**
     * 功能描述:测试获取http头信息
     * @param userAgent
     * @param Id
     * @return
     */
    @GetMapping("/v1/get_header")
    public Object getHeader(@RequestHeader("User-Agent" ) String userAgent,String Id){
        params.clear();
        params.put("access-userAgent",userAgent);
        params.put("Id",Id);
        return params;
    }

    @GetMapping("/v1/test_request")
    public Object getRequest(HttpServletRequest request){
        params.clear();
        String id = request.getParameter("id");
        params.put("id",id);
        return params;
    }
}

 3、其他HTTP 方法

package net.xdclass.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

//测试http协议的post、del、put提交
@RestController
public class OtherHttpController {
    private Map<String,Object> params = new HashMap<>();
    @PostMapping("/v1/login")
    public Object login(String id,String pwd){
        params.clear();
        params.put("id",id);
        params.put("pwd",pwd);
        return params;
    }

    @PutMapping("/v1/put")
    public Object put(String id){
        params.clear();
        params.put("id",id);
        return params;
    }
    @DeleteMapping("/v1/del")
    public Object del(String id){
        params.clear();
        params.put("id", id);
        return params;
    }

    @PostMapping("/v1/regist")
    public Object regist(String username,String password){
        params.clear();
        params.put("username: ",username);
        params.put("password: ",password);
        return params;
    }
}
原文地址:https://www.cnblogs.com/Eleven-Liu/p/10914511.html