springmvc rest风格化案例

Posted tea_year

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc rest风格化案例相关的知识,希望对你有一定的参考价值。

一,什么是RESTful

RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映射到某协议时也需要遵循其标准,但不包含对通信协议的更改

特征:

1.通过url地址来标识资源,系统中的每个对象或资源都可以通过其url地址来获取

2.统一接口,显式地使用HTTP方法,来进行crud(create,update,insert,delete)映射

创建资源使用POST

更新资源使用PUT

检索资源使用GET

删除资源使用DELETE

3.资源多重反映.通过url地址访问的每个资源都可以根据客户端的规定进行返回,例:JSON,XML

RESTful服务适用web应用中创建服务的API,将资源以JSON或XML等数据格式进行暴露,从而可以更方便的让客户端进行调用

二.基于SpringMVC的RESTful服务

在SpringMVC中对RESTful支持,主要通过注解来实现

@Controller:声明一个处理请求的控制器

@RequestMapping:请求映射地址到对应的方法,该注解又可以分为一下几种类型:

@GetMapping

@PostMpping

@PutMapping

@DeleteMapping

@PatchMapping

@ResponsrBody:响应内容转换为JSON格式

@RequestBody:请求内容转换为JSON格式

@RestContrller:等同@Controller+@ResponsrBody

前台跳转代码参考如下所示:

<%–
Created by IntelliJ IDEA.
User: qyq
Date: 2022/2/21
Time: 19:25
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

Title
<a href="user/findUser/lisi">测试</a>
<form action="emp" method="post">
    账户:<input name="name" id="name" ><br/>
    编号:<input name="id" id="id"><br/>
    <button type="submit">登录</button>
</form>

<form action="emp/1" method="post">
    <input name="_method" value="delete">
    <input type="submit" value="删除一号图书" >
</form>
<form action="emp/1" method="post">
    <input name="_method" value="put">
    <input type="submit" value="更新一号图书"  >
</form>
复制 Emp实体类参考如下所示:

package com.aaa.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@Component
public class Emp
private Integer id;
private String name;

复制
控制器EmpController参考如下:

package com.aaa.controller;

import com.aaa.entity.Emp;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

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

@Controller
public class EmpController
@RequestMapping(value = “/emp”,method = RequestMethod.GET)
public ModelAndView getAllEmps()
ModelAndView mv=new ModelAndView();
List empList=new ArrayList();
empList.add(new Emp(1,“张三”));
empList.add(new Emp(2,“李四”));
mv.addObject(“emps”,empList);
mv.setViewName(“emplist”);
return mv;

@RequestMapping(value = “/emp/id”,method = RequestMethod.DELETE)
@ResponseBody
public String deleteEmp(@PathVariable(“id”)Integer id)
System.out.println(“调用service层业务…”);
return “emplist”;

@RequestMapping(value = “/emp”,method = RequestMethod.POST)

public String addEmp(Emp emp)
    System.out.println("增加数据...");
    return "emplist";

@RequestMapping(value = "/emp/id",method = RequestMethod.PUT)
@ResponseBody
public String editEmp(@PathVariable Integer id) 
    System.out.println("编辑数据");
    return "emplist";


复制
针对PUT和DELETE操作可能会出问题,需要在web.xml中进行配置

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

以上是关于springmvc rest风格化案例的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC--11 Restful开发风格

SpringMVC--11 Restful开发风格

SpringMVC--11 Restful开发风格

SpringMvc介绍。

SpringMVC入门第三部分

SpringMvc入门四----rest风格Url