SSM基础-SpringMVC请求参数

本文详细介绍了SpringMVC中如何进行请求参数的绑定,包括基本数据类型、JavaBean、包含其他实体类的JavaBean以及集合类型如List、Map的绑定方式。通过示例展示了HTML表单与控制器方法参数之间的映射规则,并提到了POST请求时的中文乱码问题及其解决方案。
摘要由CSDN通过智能技术生成

请求参数的绑定说明

绑定机制

  • 表单提交的数据都是k=v格式的 username=haha&password=123
  • SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
  • 要求:提交表单的name和参数的名称是相同的

支持的数据类型

  • 基本数据类型和字符串类型:提交表单的name和参数的名称是相同的;区分大小写。
  • 实体类型(JavaBean):提交表单的name和JavaBean中的属性名称需要一致;如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name
  • 给集合(List、map集合等)属性数据封装:list[0].属性

实例

创建SpringMVC项目,配置Tomcat

基本数据类型和字符串类型数据提交

①编写index.html文件

<body>
    <div><h2>字符串基本类型</h2></div>
    <form action="/SpringMVC_Demo3/save1.do" method="get">
        <input type="text" name="username" placeholder="name"/><br/>
        <input type="text" name="age" placeholder="age"/><br/>
        <input type="submit"/>
    </form>
</body>

②编写HelloController文件

@Controller
public class HelloController {
    @RequestMapping("/save1.do")
    public void save1(String username,Integer age){
        System.out.println(username+"\t"+age);
    }
}

实体类型(JavaBean)的提交

①在src\main\java创建实体类com.qcby.entity.User以及set,get,toString方法

public class User {
    private String username;
    private String age;

    //set,get,toString方法
}

②编写index.html文件

<body>
    <div><h2>Java Bean</h2></div>
    <form action="/SpringMVC_Demo3/save2.do" method="get">
        <input type="text" name="username" placeholder="name"/><br/>
        <input type="text" name="age" placeholder="age"/><br/>
        <input type="submit"/>
    </form>
</body>

③编写HelloController文件

@Controller
public class HelloController {
    @RequestMapping("/save2.do")
    public void save2(User user){
        System.out.println(user.toString());
    }
}

实体类型(JavaBean,包含其他实体类)的提交

 ①在src\main\java创建实体类com.qcby.entity.Address以及set,get,toString方法

public class Address {
    private String province;
    private String city;

    //set,get,toString方法
}

②重构User类以及set,get,toString方法

public class User {
    private String username;
    private String age;
    private Address address;

    //set,get,toString方法
}

③编写index.html文件

<body>
    <div><h2>Java Bean</h2></div>
    <form action="/SpringMVC_Demo3/save3.do" method="get">
        <input type="text" name="username" placeholder="name"/><br/>
        <input type="text" name="age" placeholder="age"/><br/>
        <input type="text" name="address.province" placeholder="province"/><br/>
        <!-- name="对象.属性名" -->
        <input type="text" name="address.city" placeholder="city"/><br/>
        <input type="submit"/>
    </form>
</body>

④编写HelloController文件

@Controller
public class HelloController {
    @RequestMapping("/save3.do")
    public void save3(User user){
        System.out.println(user.toString());
    }
}

集合(List、map集合等)类型的提交

 ①重构User类以及set,get,toString方法

public class User {
    private String username;
    private String age;
    private List<Address> address;

    //set,get,toString方法
    //IDEA中使用ALT+INSERT快速生成set,get,toString方法
}

③编写index.html文件

<body>
    <div><h2>Java Bean</h2></div>
    <form action="/SpringMVC_Demo3/save3.do" method="get">
        <input type="text" name="username" placeholder="name"/><br/>
        <input type="text" name="age" placeholder="age"/><br/>
        <input type="text" name="address[0].province" placeholder="province1"/><br/>
        <!-- name="对象[第几个].属性名" -->
        <input type="text" name="address[0].city" placeholder="city1"/><br/>
        <input type="text" name="address[1].province" placeholder="province2"/><br/>
        <input type="text" name="address[1].city" placeholder="city2"/><br/>
        <input type="submit"/>
    </form>
</body>

④编写HelloController文件

@Controller
public class HelloController {
    @RequestMapping("/save4.do")
    public void save4(User user){
        System.out.println(user.toString());
    }
}

注意】@RequestMapping("")默认情况下接受的是get请求。post请求时@RequestMapping(value = "",method = RequestMethod.POST)。实例如下:

 集合(List、map集合等)类型的提交

 ①重构User类以及set,get,toString方法

public class User {
    private String username;
    private String age;
    private List<Address> address;

    //set,get,toString方法
    //IDEA中使用ALT+INSERT快速生成set,get,toString方法
}

②编写index.html文件,修改表单form的method值为post

<body>
    <div><h2>Java Bean</h2></div>
    <form action="/SpringMVC_Demo3/save3.do" method="post">
        <input type="text" name="username" placeholder="name"/><br/>
        <input type="text" name="age" placeholder="age"/><br/>
        <input type="text" name="address[0].province" placeholder="province1"/><br/>
        <!-- name="对象[第几个].属性名" -->
        <input type="text" name="address[0].city" placeholder="city1"/><br/>
        <input type="text" name="address[1].province" placeholder="province2"/><br/>
        <input type="text" name="address[1].city" placeholder="city2"/><br/>
        <input type="submit"/>
    </form>
</body>

③编写HelloController文件,

@Controller
public class HelloController {
   @RequestMapping(value = "/save5.do",method = RequestMethod.POST)
    public void save5(User user){
        System.out.println(user.toString());
    }
}

注意】post请求在中文条件下会乱码,所以要对web.xml进行一些操作来防止乱码

     <!--配置过滤器,解决中文乱码的问题-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!--指定字符集-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值