MuLeI
做创造价值的人
MuLeI的小站

使用SpringMVC实现RESTful风格

使用SpringMVC实现RESTful风格

使用SpringMVC实现RESTful风格

SpringMVC

1、SpringMVC是Spring体系的轻量级Web MVC框架,用于替代传统的J2EE Servlet,简化web应用开发

2、SpringMVC的核心是Controller控制器,用于处理请求,产生响应

3、SpringMVC基于Spring IOC容器运行,所有对象被IOC容器管理,提高了程序的健壮性与稳定性

  • MVC是架构模式,不是设计模式

  • View:界面部分,和用户进行交互,比如通过界面查询结果,通过表单接收用户信息等

  • Model:数据,相当于Java中业务模式部分

  • Controller:中介,是MVC的核心,用于接收视图(View)中传入的数据,再根据数据调用后端业务逻辑(Model)得到结果,再通过控制器将后端结果返回视图中(优势:界面和后端Java业务逻辑有效解耦,提高程序可维护性)

RESTful

1、REST(Representational State Transfer,表述性状态传递)以URL表示要访问的资源

2、GET/POST/PUT/DELETE对应查询、新增、更新、删除操作

  • 对于http请求,尤其是由浏览器发出的请求,由于浏览器不支持PUT/DELETE请求格式,通常使用GET进行查询操作,使用POST完成数据的新增、更新、删除操作

  • 对于同一个url,如果采用了不同的请求方式,那么对应的服务器操作和返回结果都是不同的

3、RESTful风格指响应只返回数据,通常是以JSON形式体现

例子

引入依赖 pom.xml

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.54</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>compile</scope>
</dependency>

配置文件 web.xml

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

配置文件 applicationContext.xml

<beans ...>
    <!-- 配置扫描的包 -->
    <context:component-scan base-package="..."/>
    <!-- 开启注解模式 -->
    <mvc:annotation-driven/>
    <!-- 访问静态资源 -->
    <mvc:default-servlet-handler/>
</beans>

实体类 Employee

public class Employee {
    private String name;
    private int age;
    private String department;

    public Employee(String name, int age, String department) {
        this.name = name;
        this.age = age;
        this.department = department;
    }
    //省略Getter和Setter方法
}

Controller

import com.alibaba.fastjson.JSON;

@Controller
//@RestController
public class RestfulController {
    @GetMapping("/emp/list/{DEPT}")
    @ResponseBody//将return返回的数据直接输出到客户端
    public String list(@PathVariable("DEPT") String department) {
        List<Employee> list = new ArrayList<Employee>();
        if (department.equals("RESEARCH")) {
            list.add(new Employee("JAMES", 38, "RESEARCH"));
            list.add(new Employee("ANDY", 23, "RESEARCH"));
            list.add(new Employee("SMITH", 31, "RESEARCH"));
        }
        return JSON.toJSONString(list);
    }
}

request:
localhost:8080/emp/list/RESEARCH
response:

[{"age":38,"department":"RESEARCH","name":"JAMES"},
{"age":23,"department":"RESEARCH","name":"ANDY"},
{"age":31,"department":"RESEARCH","name":"SMITH"}]
本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议,转载请注明出处!

发表回复

textsms
account_circle
email

MuLeI的小站

使用SpringMVC实现RESTful风格
使用SpringMVC实现RESTful风格
扫描二维码继续阅读
2021-07-03