SpringMVC

学习目标:

  • 掌握基于SpringMVC获取请求参数与响应json数据操作
  • 熟练应用基于REST风格的请求路径设置与参数传递
  • 能够根据实际业务建 立前后端开发通信协议并进行实现
  • 基于SSM整合技术开发任意业务模块功能

学习内容:

  1. 掌握基于SpringMVC获取请求参数与响应json数据操作

学习时间:

  • 周二8:30–18:00

学习产出:

1、SpringMVC概念
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架—表现层
2、设置请求映射路径
设置请求名作为路径前缀

@Controller
@RequestMapping("/user")//一级路径
public class UserController {
    @RequestMapping("/save")//二级路径
    //设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user save...");
        return "{'module':'user save'}";
    }

    @RequestMapping("/delet")//二级路径
    @ResponseBody
    public String delet(){
        System.out.println("user delet...");
        return "{'module':'user delet'}";
    }
}

3、springmvc解决POST中文乱码

//在config的container里写
//乱码处理
    @Override
    protected Filter[] getServletFilters(){
        CharacterEncodingFilter filter=new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }

4、参数传递
1)普通参数

 // 普通参数:请求参数名与形参名不同---@RequestParam
    @RequestMapping("/commonParamDifferentName")//二级路径
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("name") String userName,int age){
        System.out.println("普通参数传递 userName"+userName);
        return "{'module':'common Param Different Name'}";
    }

2)POJO类型参数

// POJO参数
    @RequestMapping("/pojoParam")//二级路径
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("pojo参数传递 user"+user);
        return "{'module':'pojo Param '}";
    }

3)嵌套POJO类型参数
在这里插入图片描述

4)数组类型参数

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

5)集合类型参数

 // 集合参数
    @RequestMapping("/listParam")//二级路径
    @ResponseBody
    public String listParam(@RequestParam List<String> likes){
        System.out.println("集合参数传递 likes"+ likes);
        return "{'module':'list Param '}";
    }

5、json数据传递参数
1)

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
@Configuration
@ComponentScan("com.it.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

3)在这里插入图片描述
4)

  // 集合json参数--@RequestBody
    @RequestMapping("/listParamForJson")//二级路径
    @ResponseBody
    public String listParamForJson(@RequestBody List<String> likes){
        System.out.println("集合json传递 likes"+ likes);
        return "{'module':'list Param json '}";
    }

5)

// 日期时间型参数
    @RequestMapping("/dateParam")//二级路径
    @ResponseBody
    public String dateParam(Date date,
                            @DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
                            @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
        System.out.println("传递参数 date1(yyyy-MM-dd)"+ date1);
        System.out.println("传递参数 date2(yyyy/MM/dd HH:mm:ss)"+ date2);
        return "{'module':'date Param'}";
    }

6、@RequestBody与@RequestParam区别
区别

  • @RequestParam用于接收ur1地址传参,表单传参[ application/ x-Www- form-urlencoded ]
  • @RequestBody用于接收json数据 [application/json]

应用

  • 后期开发中, 发送json格式数据为主, @RequestBody 应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数
    7、响应
    1)响应页面、跳转页面
//响应页面、跳转页面
    @RequestMapping("/toJumpPage")
    public String toJumpPage(){
        System.out.println("跳转页面");
        return "page.jsp";
    }

2)响应文本数据

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

3)响应POJO对象

  //响应POJO对象
    @ResponseBody
    @RequestMapping("/toJsonPOJO")
    public User toJsonPOJO(){
        System.out.println("返回pojo对象");
        User user=new User();
        user.setName("itcase");
        user.setAge(15);
        return user;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值