SpringMVC

本文详细介绍了SpringMVC中的控制器注解如@Controller、@RequestMapping的工作原理,涵盖了普通参数、POJO类型参数、数组和集合参数、JSON数据处理、日期类型参数以及REST风格的路径映射和参数绑定。还对比了@RequestBody、@RequestParam和@PathVariable的区别。
摘要由CSDN通过智能技术生成


SpringMVC技术与Servlet技术功能等同,均属于web层开发技术
SpringMVC是一种基于Java实现MVC模型的轻量级web框架
SpringMVC是一种表现层框架技术
SpringMVC用于进行表现层功能开发

@Controller

类型:类注解
位置:springmvc控制器类定义上方
作用:设定springmvc的核心控制器Bean

@Controller
public class UserController {
}

@RequestMapping

类型:方法注解
位置:springmvc控制器方法定义上方
作用:设置当前控制器方法请求访问路径
value(默认):请求访问路径

 @RequestMapping("/save")
 public String save(){
        System.out.println("user save...");
        return "{'module':'springmvc'";
    }

## @ResponseBody
类型:方法注解
位置:springmvc控制器方法定义上方
作用:设置当前控制器方法响应内容为当前返回值,无需解析

```java
  //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user save...");
        return "{'module':'springmvc'";
    }

工作流程分析

在这里插入图片描述

请求与响应

请求映射路径

@RequestMapping

类型:方法注解 类注解均是
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
value:请求访问路径或访问路径前缀

请求方式

  • GET请求
普通参数

普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接受参数
在这里插入图片描述

  @RequestMapping("/commonParam")
  @ResponseBody
    public String commonParam(String name,Integer age ){
        System.out.println("普通参数传递 name==>"+name);
        System.out.println("普通参数传递 age==>"+ age);
        return "{module':'common param'}";
    }
  • POST请求

普通参数:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数
在这里插入图片描述

@RequestMapping("/commonParam")
 @ResponseBody
    public String commonParam(String name,Integer age ){
        System.out.println("普通参数传递 name==>"+name);
        System.out.println("普通参数传递 age==>"+ age);
        return "{module':'common param'}";
    }
@RequestParam

类型:形参注解
位置:springmvc控制器方法形参定义前面
作用:绑定请求参数与处理器方法形参间的关系
参数:
required :是否为必传参数
defaultValue:参数默认值

 @RequestMapping("/commonParamDifferentName")
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("name")String username, int  age ){
        System.out.println("普通参数传递 username==>"+username);
        System.out.println("普通参数传递 age==>"+ age);
        return "{module':'common param different name'}";
    }

参数种类:

普通参数

-POJO类型参数

pojo参数:请求参数名与形参对象属性名相同,定义pojo类型即可接受参数

在这里插入图片描述

//POJO参数
    @RequestMapping("/POJOParam")
    @ResponseBody
    public String POJOParam(User user ){
        System.out.println("POJO参数传递 user==>"+user);
        return "{module':'POJO param '}";
    }

嵌套POJO类型参数

pojo对象中包含pojo对象
嵌套pojo参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接受嵌套Pojo属性参数
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

 //嵌套POJO参数
    @RequestMapping("/POJOContainParam")
    @ResponseBody
    public String POJOContainParam(User user ){
        System.out.println("POJO嵌套参数传递 user==>"+user);
        return "{module':'POJO param '}";
    }

数组类型参数

数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接受参数

在这里插入图片描述

//数组参数
    @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes ){
        System.out.println("数组参数传递 likes==>"+ Arrays.toString(likes));
        return "{module':'array param '}";
    }

集合类型参数

集合保存普通参数:请求参数名与形参集合对象名形同且请求参数为多个,@RequestParam绑定参数关系
在这里插入图片描述

//集合参数
    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam( @RequestParam List  <String> likes ){
        System.out.println("集合参数传递 likes==>"+likes);
        return "{module':'lisy param '}";
    }

请求参数(传递Json数据)

@EnableWebMvc

开启自动转换json数据的支持
类型:配置类注解
位置:springmvc配置类定义上方
作用:开启springmvc多项辅助功能

@Configuration
@ComponentScan("com.example.springmvc_02_request_param.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

@RequestBody

类型:形参注解
位置:springmvc控制器方法形参定义前面
作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

//集合参数:json格式
    @RequestMapping("/listParamForJson")
    @ResponseBody
    public String listParamForJson(  @RequestBody List  <String> likes ){
        System.out.println("list common(json)参数传递 likes==>"+likes);
        return "{module':'list common for jason param '}";
    }

pojo参数:json数据与形参对象属性相同,定义Jopo类型形参即可接受参数

在这里插入图片描述

//POJO参数:json格式
    @RequestMapping("/POJOParamForJson")
    @ResponseBody
    public String POJOParamForJson(@RequestBody User user ){
        System.out.println("POJO(json)参数传递 user==>"+user);
        return "{module':'POJO  for json param '}";
    }

pojo集合参数:json数组数据与集合泛型属性名相同,定义list类型形参即可接受参数

在这里插入图片描述

 //集合参数:json格式
    @RequestMapping("/listPojoParamForJson")
    @ResponseBody
    public String listPojoParamForJson(  @RequestBody List  <User> likes ){
        System.out.println("list pojo(json)参数传递 likes==>"+likes);
        return "{module':'list pojo for jason param '}";
    }

@RequestBody与@RequestParam的区别

在这里插入图片描述

日期型参数传递

在这里插入图片描述

 //日期参数
    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(Date date,@DateTimeFormat (pattern="yyyy-MM-dd")Date date1,
                                      @DateTimeFormat (pattern="yyyy/MM/dd HH:mm:ss")Date date2){
        System.out.println("参数传递 date==>"+date);
        System.out.println("参数传递date1( yyyy-MM-dd)==>"+date1 );
        System.out.println("参数传递date1( yyyy/MM/dd HH:mm: ss)==>"+date2 );
        return "{module':'date param '}";
    }

@DateTimeFormat

类型:形参注解
位置:springmvc控制器方法形参前面
作用:设定日期时间型数据格式
pattren:日期时间格式字符串

响应

响应文本数据

 //响应文本数据
    @RequestMapping("/toText")
    @ResponseBody
    public String toText(){
        System.out.println("返回纯文本数据");
        return "response text";
    }

响应json数据(对象转json)

 //响应pojo对象
    @RequestMapping("/toJsonPOJO")
    @ResponseBody
    public User toJsonPOJO(){
        System.out.println("返回json对象数据");
        User user = new User();
        user.setName("itcast");
        user.setAge(15);
        return  user;
    }

@ResponseBody

类型:方法注解
位置:springmvc控制器方法定义上方
作用:设置当前控制器返回值作为响应体

REST风格

REST:表现形式状态转换
在这里插入图片描述优点:

  • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
  • 书写简化
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

@RequestMapping

类型:方法注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求路径
属性:value(默认):请求访问路径
method:http请求动作,标准动作9GET/POST/DELETE)

@PathVariable

类型:形参注释
位置:SPringMVC控制器方法形参定义前面
作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

在这里插入图片描述@RequestBody、@RequestParam 、@PathVariable的区别
在这里插入图片描述

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值