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 = @[email protected][email protected] @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 = @[email protected] @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; } }