Java技术专题

Springmvc之接受请求参数

2018-10-07  本文已影响9人  爱撒谎的男孩

Springmvc之接受请求参数

准备工作

<form action="<%=request.getContextPath()%>/user/login.do" method="post">
    username:<input type="text" name="username"> <br>
    password:<input type="text" name="password"> <br>
    age:<input type="text" name="age">
    <input type="submit" value="提交">
</form>

【不推荐】HttpServletRequest

    @RequestMapping(value="/login.do")
    public String login(HttpServletRequest request,HttpServletResponse response){
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        int age=Integer.parseInt(request.getParameter("age"));  //转换类型
        System.out.println(username+"--->"+password);
        return "success";
    }

直接在方法中声明对应的参数(name的属性必须和方法参数一致)

    @RequestMapping(value = "/login.do")
    public String login(String username,String password,Integer age) {
        System.out.println(username + "--->" + password+"----->"+age);
        return "success";
    }

【推荐】@RequestParam

    /**
     * 使用@RequestParam获取请求参数
     * @RequestParam()中的value属性为form表单中对应的name属性
     * 自动转换数据类型,只需要定义方法参数为所需的数据类型即可,spring会为我们自动转换
     */
    @RequestMapping(value = "/login.do")
    public String login(@RequestParam(value = "username") String name,
            @RequestParam("password") String pwd,@RequestParam("age") Integer age) {
        System.out.println(name + "--->" + pwd+"----->"+age);
        return "success";
    }

属性

    /*
     * 这里的获取请求参数中的username,age的值
     * 其中username的这个注解默认的是required=true,因此这个是不可以没有的
     * age的这个注解设置了required=false,表示可以没有这个参数,但是如果没有这个参数,那么默认的是null,但是int类型的没有null,因此也会是报错的,有两种解决方式:
     *      1) 通过defalutValue设置其默认的值
     *      2) 如果我们就想要设其为null,可以使用封装类Integer类型即可
     */
    @RequestMapping(value = "/testRequestParams")
    public String testRequestParams(@RequestParam(value="username") String username,@RequestParam(value="age",required=false) int age) {
        System.out.println("username,age  "+ username+"  ,  "+age);
        return SUCCESS;
    }

【推荐】使用自定义数据类型(JavaBean)

public class User {
    private String username;
    private String password;
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }

}
@RequestMapping(value = "/login.do")
    public String login(User user) {
        System.out.println(user);
        return "success";
    }

总结

    /**
     * 混合使用案例
    */
    @RequestMapping(value = "/login.do")
    public String login(User user,@RequestParam("gender")String gender) {
        System.out.println(user);
        return "success";
    }
上一篇下一篇

猜你喜欢

热点阅读