Spring Web MVC

目录

一.简介

二.建立连接(客户端和服务器)

三.请求

1.传递单个参数

2.传递多个参数

3.对象

4.数组/集合

5.JSON

6.URL参数

7.上传文件

8.获取cookie和session

(1)获取cookie

(2)获取session

9.设置header

四.响应

1.返回静态页面

2.返回数据

3.返回HTML代码片段

4.返回JSON

5.设置状态码

6.设置Header


一.简介

Spring Web MVC是包含在Spring框架中的用来构造web项目的框架,底层基于Servlet API.

(之前使用的SpringBoot也是创建Spring MVC的一种方式)

MVC(model view controller):把一个项目分成三部分,三部分之间的关系如下

Spring Web MVC_第1张图片

Spring进行实现MVC模式,称为Spring MVC

Spring Web MVC_第2张图片

二.建立连接(客户端和服务器)

@Requestmapping (路由映射):可以修饰方法,也可以修饰类。

访问地址:类的路径+方法路径

修饰方法

Spring Web MVC_第3张图片

修饰类

Spring Web MVC_第4张图片

在postman中观察可得:@Requestmapping支持get请求、post请求...

Spring Web MVC_第5张图片

当想要指定一个具体的方法时,在代码中进行调整。

Spring Web MVC_第6张图片

三.请求

1.传递单个参数

Spring Web MVC_第7张图片

2.传递多个参数

Spring Web MVC_第8张图片

发送请求的参数名称可以调换

注意:在代码中定义类型尽量使用包装类型(int的包装类为Integer),使用基本类型时,当输入的变量为空时会报错,而包装类型会显示为空。

3.对象

单独定义一个对象类,更方便后期根据需求修改代码。

package com.example.demo.controller;

public class Person {
    Integer id;
    String name;
    Integer age;

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

Spring Web MVC_第9张图片

后端参数重命名

前端传参是@requesPrama()中的

Spring Web MVC_第10张图片

4.数组/集合

数组

当请求中同一个参数有多个时,浏览器就会帮我们封装成一个数组。

Spring Web MVC_第11张图片

集合

默认传递的参数是数组形式,要是想要传递一个集合的形式,需要在参数前面加上@RequestParam

Spring Web MVC_第12张图片

5.JSON

json本质上是一个字符串,表示对象的字符串。

传递json数据,需要使用@RequestBody

Spring Web MVC_第13张图片

6.URL参数

获取一个url中的参数需要一个@PathVariable,获取多个url中的参数需要多个@PathVariable

需要注意顺序,顺序要与参数相匹配,参数个数也需要匹配

Spring Web MVC_第14张图片

URL参数中的重命名

Spring Web MVC_第15张图片

7.上传文件

@RequestPart

Spring Web MVC_第16张图片

将图片上传到指定位置

Spring Web MVC_第17张图片

8.获取cookie和session

(1)获取cookie

1)spring中获取指定个数的cookie,使用@CookieValue

Spring Web MVC_第18张图片

2)获取多个cookie的方式(不是spring,采用最原始的方式,在控制台获取value值)

    //获取多个cookie的方式
    @RequestMapping("getCookie")
    public String getCookie(HttpServletRequest request){
        Cookie[] cookies=request.getCookies();
//  两种写法
//        for (Cookie cookie : cookies) {
//            System.out.println(cookie.getName()+":"+cookie.getValue());
//        }
        //空指针异常处理
        if(cookies!=null){
            Arrays.stream(cookies).forEach(cookie -> {
                System.out.println(cookie.getName()+":"+cookie.getValue());
            });
        }
        return "获取cookie成功";
    }

Spring Web MVC_第19张图片

(2)获取session

1)普通方式

    //设置session
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest request){
        //创建session
        HttpSession session= request.getSession();
        //给session赋值
        session.setAttribute("username","swy");
        return "success";
    }
    //获取session
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest request){
        //session默认为true,没有session会自动创建一个,设置成false避免自动创建
        HttpSession session= request.getSession(false);
        if(session!=null){
            String username=(String) session.getAttribute("username");
            return "登录用户:"+username;
        }
        return "session为空!";

Spring Web MVC_第20张图片

2)spring方式

@SessionAttribute

Spring Web MVC_第21张图片

    @RequestMapping("/getSession2")
    //默认是一个必传参数
    public String getSession2(@SessionAttribute(required = false) String username){
        return "username:"+username;
    }

3)使用HttpSession的方式

Spring Web MVC_第22张图片

9.设置header

1)原始方式

Spring Web MVC_第23张图片

2)spring方式

@RequestHeader

Spring Web MVC_第24张图片

以上:

1.传递数组:同一个请求参数有多个时,会自动封装成数组

2.传递集合:@RequestParam

3.传递JSON:@RequestBody

4.上传文件:@RequestPart

5.Cookie :@CookieValue  

6.Session:@SessionAttribute

7.Header:@RequestHeader

8.url:@PathVariable

9.文件:@RequestPart

四.响应

1.返回静态页面

1)创建一个简单的html页面

Spring Web MVC_第25张图片

2)返回该页面

Spring Web MVC_第26张图片

@Controller和@RestController

Spring Web MVC_第27张图片

2.返回数据

@ResponseBody

Spring Web MVC_第28张图片

可以修饰类、可以修饰方法。修饰类的时候,表示这个类下的所有方法,返回的均为数据。修饰方法时,表示该方法返回的是数据。

如果一个类中返回的都是数据则把注释加在类上,如果一个类中只有相对应的方法中返回数据,则把该注释添加在相对应的方法上。

3.返回HTML代码片段

Spring Web MVC_第29张图片

4.返回JSON

当返回的接口是String类型、Integer类型时,content-Type是text/html

当接口返回的是对象/Map时,content-Type自动设置成application/json

这里举例是返回一个对象:

Spring Web MVC_第30张图片

5.设置状态码

设置状态码与页面展示无关

Spring Web MVC_第31张图片

Spring Web MVC_第32张图片

6.设置Header

平时很少用到

举例:设置header的返回类型属性:

Spring Web MVC_第33张图片

Spring Web MVC_第34张图片

举例:自定义header属性

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