SpringMVC获取请求参数

通过ServletAPI获取

没必要用原生的ServletApi,做个了解即可

将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请
求的请求报文的对象

   @GetMapping("/GetVague")
    public String GetVague(HttpServletRequest request,Model model){
    // 获取参数
        String name = request.getParameter("username");
        String Types = request.getParameter("Types");
        return "/GetInto";
    }
<a th:href="@{/testParam(username='admin',Types=123456)}">测试获取请求参数-- >/testParam</a><br>

通过控制器方法的形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参

    @RequestMapping("/testParam")
    //跟请求参数名字保持一致就可以获取形参
    public String testParam(String username,String password){
        System.out.println( username+","+password);
        return "target";
    }

在这里插入图片描述

获取同名参数值

<form action="@{/testParam}" method="post">
   用户名 <input type="text" name="username">
    密码 <input type="password" name="password">
    爱好 <input type="checkbox" name="hoby" value="a">
    爱好 <input type="checkbox" name="hoby" value="b">
    爱好 <input type="checkbox" name="hoby" value="c">
    <button type="submit">测速用控制器的形参获取参数</button>
</form>

有多个参数时会通过逗号来分割,也可以使用字符串数组来获取,String[]获取到的就是一个数组,在迭代出来即可

 @RequestMapping("/testParam")
    //跟请求参数名字保持一致就可以获取形参
    public String testParam(String username,String password,String hoby){
        System.out.println( username+","+password+",hoby:----"+hoby);
        return "target";
    }

@RequestParam 解决参数名字不匹配

在这里插入图片描述

<form action="/testParam" method="post">
   用户名 <input type="text" name="users_name">
    爱好 <input type="checkbox" name="hoby" value="a">
    爱好 <input type="checkbox" name="hoby" value="b">
    爱好 <input type="checkbox" name="hoby" value="c">
    <button type="submit">测速用控制器的形参获取参数</button>
</form>
    @RequestMapping("/testParam")
    //跟请求参数名字保持一致就可以获取形参
    public String testParam(
            //将请求参数和形参创建映射关系
            @RequestParam("users_name") String username,
                String hoby){
        System.out.println( username+",hoby:----"+hoby);
        return "target";
    }

required为False可以不必传值访问,如果是True必须要传值否则会400

   @RequestParam(value = "users_name",required = false) String username,

defaultValue 设置默认值为hehe。如果获取空的参数,默认值就是自己设置的值

  @RequestParam(value = "users_name",defaultValue = "hehe") String username,
       

@RequestHeader

@RequestHeader是将请求头信息和控制器方法的形参创建映射关系

@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

指定请求头信息,会在访问的请求头中找到host这个信息,赋值给形参

    @RequestParam(value = "users_name", defaultValue = "hehe")
                    String username,
                    String hoby,
                    @RequestHeader("Host") String Host)

@CookieValue

@CookieValue是将cookie数据和控制器方法的形参创建映射关系

@CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

通过POJO实体类获取请求参数

可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

<form action="/Moldes" method="post">
   用户名 <input type="text" name="users_name">
    密码 <input type="password" name="users_password" value="a">

    <button type="submit">测速用控制器的实体类获取参数</button>
</form>

实体类

package com.item.mvc.user;

public class Users {
    private String users_name;

    public String getUsers_name() {
        return users_name;
    }

    public void setUsers_name(String users_name) {
        this.users_name = users_name;
    }

    public String getUsers_password() {
        return users_password;
    }

    public void setUsers_password(String users_password) {
        this.users_password = users_password;
    }

    public Users(String users_name, String users_password) {
        this.users_name = users_name;
        this.users_password = users_password;
    }

    private String users_password;
}

控制层

    //用实体类来接受
    @RequestMapping("/Moldes")
    public String Moldes(Users user) {
        System.out.println(user.getUsers_name() + ":password:" + user.getUsers_password());
        return "target";
    }

输出:
123123:password:a12312

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值