栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十一节——获取请求数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十一节——获取请求数据

一、可以从客户端获取的数据类型
  1. 基本类型参数
  2. POJO类型参数(JavaBean)
  3. 数组类型
二、获取数据的方法 Ⅰ、基本数据类型——在controller中的业务方法的参数名称与发送过来的参数名称一致,MVC自动匹配输入
  1. 编辑main-java-study-controller目录下的UserController.class,定义一个方法
@RequestMapping("/quick1")
    @ResponseBody
    public void show1(String name,int age) {
        System.out.println(name+age);
    }
  1. 启动tomcat,访问http://localhost:8080/demo03_war/quick1?name=qwe&age=12,成功获取到数据
Ⅱ、POJO数据类型——传入的参数是类的属性名称,MVC自动匹配成对象
  1. 定义一个student类,类的属性有name与age两个属性,且都定义了getter和setter方法
  2. UserController.class中一个方法的请求参数是student类型
@RequestMapping("/quick1")
    @ResponseBody
    public void show1(Student student) {
        System.out.println(student);
    }
  1. 启动tomcat,访问访问http://localhost:8080/demo03_war/quick1?name=qwe&age=12,MVC成功将数据封装成Student对象
Ⅲ、数组类型——自动匹配
  1. UserController.class中一个方法的请求参数是string数组,且名称是str
  2. 启动tomcat,传入连续的且名称都是str的参数,mvc会自动封装成数组,URL:quick1?str=a&str=b&str=c
Ⅳ、集合类型——通过定义一个类,类里面定义一个student类型的list数组,客户端传入参数需要指明第几个数组中的第几个属性
  1. 定义一个Vo类
public class VO {
    private List vo_list;

    public List getVo_list() {
        return vo_list;
    }

    public void setVo_list(List vo_list) {
        this.vo_list = vo_list;
    }

    @Override
    public String toString() {
        return "VO{" +
                "vo_list=" + vo_list +
                '}';
    }
}
  1. 定义controller
@RequestMapping("/quick1")
    @ResponseBody
    public void show1(VO vo) {
        System.out.println(vo);
    }
  1. 定义一个test.jsp,通过里面的table标签传递数组




  1. 开启tomcat,访问jsp/test.jsp页面,点击提交按钮,获取到数据
  2. 由于quick1需要vo对象的数据,而vo需要student类型的list数组,数组名称是vo_list,所以提交数据时需要指定一致的数组名称,和属性值
Ⅴ、集合类型——使用ajax提交时,指定为contentType的json,MVC通过@RequestBody获取
  1. 在webapp目录下新建一个js目录,并把jquery-3.3.1导入到js目录中
  2. 编辑spring-mvc.xml,将jquery添加进去

或者

  1. 修改test.jsp


    Title
    
    




  1. 使用@RequestBody注解接受ajax数据
@RequestMapping("/quick1")
    @ResponseBody
    public void show1(@RequestBody List user_list) {
        System.out.println(user_list);
    }
Ⅵ、解决POST传入中文的乱码问题
  1. 编辑web.xml

  characterEncodingFilter
  org.springframework.web.filter.CharacterEncodingFilter
  
    encoding
    UTF-8
  


  characterEncodingFilter
  /*

Ⅶ、使用@RequestParam注解解决提交参数名称与方法参数不一致问题
  1. 修改controller
@RequestMapping("/quick1")
    @ResponseBody
    public void show1(@RequestParam(value = "username") String name) {
        System.out.println(name);
    }
  1. 页面提交username参数时,MVC将其转换为name进行封装使用
三、获取数据——Restful
  1. 图解

  2. 访问URL时,提交的参数:http://localhost:8080/demo03_war/quick1/zhangsan

  3. 修改controller

@RequestMapping("/quick1/{name}")
    @ResponseBody
    public void show1(@PathVariable(value = "name",required = true) String username) {
        System.out.println(username);
    }
  1. 启动tomcat访问http://localhost:8080/demo03_war/quick1/zhangsan验证数据
四、获取数据——自定义转换类型

前提:虽然可以将string转换为int,但是对于日期等数据无法自动转换,需要手动配置

  1. 在main-java-study-converter目录下创建DateConverter.class
public class DateConverter implements Converter {
    @Override
    public Date convert(String dateStr) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date =null;
        try {
            date = format.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}
  1. 配置spring-mvc.xml


        
            
                
            
        
    
  1. 编辑controller
@RequestMapping(value = "/quick1")
    @ResponseBody
    public void show1(Date date) {
        System.out.println(date);
    }
  1. 启动tomcat,访问:quick1?date=2021-10-04
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号