Spring MVC RESTFul描述

1 什么是RESTFul

  • RESTFul编写程序一种风格,不是协议。

  • 对HTTP协议诠释(落地方案),请求方式的落地

  • http协议共8种

序号 方法 描述
1 GET   请求指定页面信息。请求数据放在协议头中,返回实体主体
2 POST 提交资源,让服务器进行处理,如表单数据或图片数据,提交的数据放在请求体中。内容可能会被修改
3 PUT 与POST相同,用于发送资源与服务器,储存在服务器的指定位置,同时PUT是安全的,无论请求多少次都是在同一资源上修改
4 DELETE 请求服务器删除指定的资源或页面,建议使用https协议,否则可能被防火墙拦截,
5 HEAD 只请求页面的头部信息,用于检查该链解决是否可以使用
6 OPTION 允许客户端查看服务器的性能,以及获取服务器支持的HTTP请求方法;
7 TRACE 回显服务器收到的请求,返回得到的部分内容
8 CONNECT 建立一个对资源的网络连接。建立连接后,会响应一个200状态码和一条"Connectioin Established"的消息。

1.1常用的http协议有4种

get
post
put
delete

RESTFul对服务器程序操作,进行约定。

  • 每一个操作组成:请求路径 + 请求方式 。 (一个路径,因为请求方式的不同,可以完成不同操作)

  • 数据传输方式:JSON数据

    // 传统开发路径
查询:http://localhost:8080/user/selectAll.action
添加:http://localhost:8080/user/addUser.action
修改:http://localhost:8080/user/updateUser.action
删除:http://localhost:8080/user/deleteUser.action

// RESTFul风格路径
查询:get    http://localhost:8080/user/
详情:get    http://localhost:8080/user/123
添加:post   http://localhost:8080/user/
修改:put    http://localhost:8080/user/
删除:delete http://localhost:8080/user/123

2.使用 

2.1 步骤

  • 步骤1:创建新项目 (mvc_restful)

  • 步骤2:导入jar包:spring 、spring mvc、jackson、mybatis

  • 步骤3:配置类,

    • spring mvc 配置

    • 启动配置类,前端控制器没有扩展名,由 *.action 改成 /

  • 步骤4:编写controller,完成增删改查

     4.1 类级别:
@Controller 、@ResponseBody		
//--> 合成注入 
@RestController

        4.2 方法级别:@RequestMapping(value="路径", method=RequestMethod.GET /POST/PUT/DELETE)

//传统写法
@RequestMapping(value="路径", method=RequestMethod.GET /POST/PUT/DELETE)

//-->各种请求方式的简化写法
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

@PathVariable		//用于获得路径参数

         4.3 方法返回值  

//根据约束,基于RESTFul风格,方法的的返回值,建议使用 ResponseEntity 类型
// ResponseEntity 用于封装返回值信息,含状态码
// 返回200状态码,ResponseEntity.ok("添加成功");
// 其他状态码,new ResponseEntity<>("添加成功", HttpStatus.UNAUTHORIZED)

3.实现

3.1配置类 

 

package com.czxy.config;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;


public class WebInitializer1 implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        //1 配置spring工厂
        AnnotationConfigWebApplicationContext application = new AnnotationConfigWebApplicationContext();
        // 注册所有的配置类
        application.register(MvcConfiguration1.class);

        //2 post中文乱码
        FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encoding", new CharacterEncodingFilter("UTF-8"));
        encodingFilter.addMappingForUrlPatterns(null, true, "/*");

        //3 核心控制器
        ServletRegistration.Dynamic mvcServlet = servletContext.addServlet("springmvc", new DispatcherServlet(application));
        mvcServlet.addMapping("/");
        mvcServlet.setLoadOnStartup(2);	//tomcat启动时,执行servlet的初始化方法

    }

}

3.2控制器

package com.czxy.controller;

import com.czxy.domain.User;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    /*查询所有*/
    @GetMapping
    public List selectAll(){
        ArrayList list = new ArrayList<>();
        list.add(new User("u001","jack","1234",new Date()));
        list.add(new User("u002","rose","4567"));
        list.add(new User("u003","jim","8888"));
        return list;
    }
    /*添加*/
    @PostMapping
    public User save(User user){
        System.out.println(user);
        return user;
    }

//    更新
    @PutMapping
    public String update(@RequestBody String id){
        System.out.println(id);
        return "默认乱码";
    }

    /*通过id删除*/
    @DeleteMapping("/{id}")
    public String delete(@PathVariable String id){
        System.out.println(id);
        return "默认乱码";
    }

    /*通过id查询详细*/
    @GetMapping("/{id}")
    public String findById(@PathVariable String id){
        System.out.println(id);
        return "通过id查询详细";
    }
}

你可能感兴趣的:(spring,mvc,restful,maven)