请求注解:

 

  • @RestController and @RequestMapping是springMVC的注解,不是springboot特有的
  • @RestController = @Controller+@ResponseBody    (Json格式)不加的话会当成一个页面view   会出错

 

  • @SpringBootApplication = @Configuration+@EnableAutoConfiguration+@ComponentScan

curl 方法也能够进行页面的访问(控制台)

 

Postman中的GET请求:

1、单一参数@RequestMapping(path = "/{id}", method = RequestMethod.GET)     

1) public String getUser(@PathVariable String id ) {} 

    2)@RequestMapping(path = "/{dep_id}/{user_id}", method = RequestMethod.GET) 



可以同时指定多个提交方法 
getUser(@PathVariable("depid") String departmentID,@PathVariable("userid") String userid)
    3)一个顶俩
    @GetMapping = @RequestMapping(method = RequestMethod.GET)
    @PostMapping = @RequestMapping(method = RequestMethod.POST)
    @PutMapping = @RequestMapping(method = RequestMethod.PUT)
    @DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)

    4)@RequestParam(value = "name", required = true)
        可以设置默认值,比如分页 

    4)@RequestBody 请求体映射实体类
        需要指定http头为 content-type为application/json charset=utf-8

    5)@RequestHeader 请求头,比如鉴权
        @RequestHeader("access_token") String accessToken

    6)HttpServletRequest request自动注入获取参数

java springboot编写 tcp数采接口_spring

@PathVariable()中   city_id 从path中的city_id中取值,之后映射到cityId中,

 

//user_id 要与路径中的一致,之后映射到后面到PathVariable中对应到参数
@RestController
public class GetController {
    private Map<String,Object> map=new HashMap<>();

    @RequestMapping(path = "/{user_id}/{user_name}",method = RequestMethod.GET)
    public Object findUser(@PathVariable("user_id") String userId,@PathVariable("user_name")String userName){
        map.clear();
        map.put("userId",userId);
        map.put("userName",userName);
        return map;
    }


//默认值   required 是否是必须到
    @GetMapping(value = "/v1/page_user1")
    public Object pageUser(@RequestParam(value = "book_page",defaultValue = "0") int from,@RequestParam(value = "book_size",required = true) int size){
        map.clear();
        map.put("from" ,from);
        map.put("size",size);
        return map;

    }


//传递Bean对象
    @RequestMapping("/v1/save_user")
    public Object saveUser(@RequestBody User user){
        map.clear();
//        map.put("age",user.getAge());
//        map.put("name",user.getName());
        map.put("user",user);
        return map;
    }


//传递消息头
    @GetMapping("/v1/token")
    public Object getToken(@RequestHeader("token") String token,String id){
        map.clear();
        map.put("token",token);
        map.put("id",id);
        return map;
    }



//通过原来到Request的方法传参数
    @GetMapping("/v1/request")
    public Object testRequest(HttpServletRequest request){

        map.clear();
        String id=request.getParameter("id");
        map.put("id",id);
        return map;

    }

Put/post/delete方法

put方法一般用于更新操作

@RestController
public class OtherHttpController {
    Map<String,Object> map=new HashMap<>();
    @PostMapping("/v1/login")
    public Object login(String id,String pwd){
        map.clear();
        map.put("id",id);
        map.put("password",pwd);
        return map;
    }


    //用于更新操作
    @PutMapping("/v1/update")
    public Object put(String id){
        map.clear();
        map.put("id",id);
        return map;

    }

    //删除操作
    @DeleteMapping("/v1/del")
    public Object delete(String id){
        map.clear();
        map.put("id",id);
        return map;
    }


}

 

java springboot编写 tcp数采接口_java_02

java springboot编写 tcp数采接口_spring_03

 

java springboot编写 tcp数采接口_html_04

 

Json框架

Bean--->Json

Jackson(springboot使用的)

 

常用框架 阿里 fastjson,谷歌gson等

JavaBean序列化为Json,

性能:Jackson > FastJson > Gson > Json-lib 同个结构
Jackson、FastJson、Gson类库各有优点,各有自己的专长
空间换时间,时间换空间
jackson处理相关自动

指定字段不返回:@JsonIgnore   (用户的密码不能返回给前端)
指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
空字段不返回:@JsonInclude(Include.NON_NUll)
指定别名:@JsonProperty

目录结构

  • src/main/java:存放代码
  • src/main/resources
  • static: 存放静态文件,比如 css、js、image, (访问方式 http://localhost:8080/js/main.js)
  • templates:存放静态页面jsp,html,tpl
  • config:存放配置文件,application.properties

 

 

引入thymeleaf依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

//注意:如果不引人这个依赖包,html文件应该放在默认加载文件夹里面,
//比如resources、static、public这个几个文件夹,才可以访问
同个文件的加载顺序,静态资源文件 Spring Boot 默认会挨个从

META/resources >resources >static >public
里面找是否存在相应的资源,如果有则直接返回。

在这里进行测试的时候,要将之前的一个方法进行注释掉,因为这是路径的完全匹配

java springboot编写 tcp数采接口_spring_05

 

之后在template中加入一个index.html发现找不到

localhost:8080/index.html

解决方法:引入thymeleaf模版引擎

java springboot编写 tcp数采接口_html_06

@Controller
public class FileController {
    @RequestMapping("/api/v1/gopage")
    public Object getPage() {

        return "index";
    }

}

注意:要用@Controller不是@RestController(返回json)

通过拦截器实现resoller

resources/static目录默认是加进去的,所以不需要在路径中加入

java springboot编写 tcp数采接口_html_07

自定义一个test文件,实现test文件中实现对test.js文件对访问

java springboot编写 tcp数采接口_spring_08


无法映射到test文件夹(没有录入到spring加载对范围中来)

解决办法:

spring.resources.static-locations = 
classpath:/META-INF/resources/,
classpath:/resources/,
classpath:/static/,
classpath:/public/,
classpath:/test/

java springboot编写 tcp数采接口_html_09

静态资源文件存储在CDN(内容分发网)  加快网站的访问速度