【02】SpringMVC--参数绑定

【02】SpringMVC笔记–参数绑定

参数绑定的类型

1)页面链接传入的参数
<a href="params/testParam?username=Yang&age=12">参数绑定</a>

带注解的Controller方法

提交的参数名和方法参数名称和类型都要一致

@Controller
//设置一级路径,那么方法上就是二级路径
@RequestMapping("/params")
public class ParamsController {
    @RequestMapping("/testParam")
    public String testParam(String username,Integer age){
        System.out.println("年龄:"+age+" 用户名:"+username);
        return "success";
    }
}



2)表单提交的参数封装为JavaBean

表单:提交的name属性值要和 bean中的属性值名称相对应

只需要通过一个bean对象作为参数就可以直接封装到内部属性

Account实体类:

public class Account implements Serializable {

    private String username;
    private String password;
    private Double money;

    //注意:这里还有一个User对象
    private User user;

    //getter(),setter(),toString()
}

前台表单:

<form action="params/addAccount" method="post">

        <%--
            注:这里的name值要和JavaBean的属性名一样。
            如果属性里面还有对象,比如User,要使用“."的方式获取属性
       --%>
        用户名:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        金额:<input type="text" name="money"><br>

        <%--    注意这里name值的书写方式--%>
        姓名:<input type="text" name="user.uname"><br>
        年龄:<input type="text" name="user.age"><br>

        <input type="submit" value="提交">
</form>

Controller类:通过一个Account对象接收表单数据

@Controller
@RequestMapping("/params")
public class ParamsController {

     @RequestMapping("addAccount")
    public String addAccount(Account account){
        System.out.println("添加成功!!");       
        return "success";
    }
 
}


3)页面提交的参数封装到List,Map

通过页面提交一个用户和多个账户,并把多个账户分别放到User对象的List<User>Map<String,User>

User

public class User implements Serializable {

    private String uname;
    private Integer age;
    //自定义类型转换
    private Date birthday;
    //提交表单。里面有集合数据如何封装
    private List<Account> accounts;
    private Map<String,Account> myMap;

	//getter(),setter(),toString()
}

前台表单:注意<input>标签内name属性值的书写方式

<form action="params/testSubmitList" method="post">

        <%--注:这里的name值要和JavaBean的属性名一样。
            如果属性里面还有对象,比如User,要使用“."的方式获取属性--%>
                                    
        姓名:<input type="text" name="uname"><br>
        年龄:<input type="text" name="age"><br><br>

            账户1放到List<br>
            用户名1:<input type="text" name="accounts[0].username"><br>
            密码1:<input type="text" name="accounts[0].password"><br>
            金额1:<input type="text" name="accounts[0].money"><br><br>

            账户2放到Map中<br>
            用户名2:<input type="text" name="myMap['one'].username"><br>
            密码2:<input type="text" name="myMap['one'].password"><br>
            金额2:<input type="text" name="myMap['one'].money"><br>
        <input type="submit" value="提交">
</form>

Controller类

@Controller
@RequestMapping("/params")
public class ParamsController {

     @RequestMapping("testSubmitList")
    public String testSubmitList(User user){
        System.out.println("添加成功!!");
		//...
        return "success";
    }
 
}


4)使用Servlet原生API

就是在Controller类的方法加上原来的参数就OK了。

@Controller
//设置一级路径,那么方法上就是二级路径
@RequestMapping("/params")
public class ParamsController {

    @RequestMapping("testServlet")
    public String testServlet(HttpServletRequest request, HttpServletResponse response){
       	//这样就获取到原生的HttpServletRequest和其他的了
        return "success";
    }
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值