接收数据和数据绑定

接收数据和数据绑定

代码优化 (简化)

@RequestMapping(value="show1")
    public String test17(Model model){

        model.addAttribute("msg", "优化后的代码");//添加数据

        return "hello";//springmvc默认将返回值最为视图名称
    }

接收servlet的内置对象

这些对象的接收非常简单,只需要在方法形参中有该对象就能接收,不需要任何配置

@RequestMapping(value="show17")
    public String test17(Model model,HttpServletRequest request,HttpServletResponse response,HttpSession session){  
        业务逻辑以及响应 
        }  

接收请求路径中的占位符

@PathVariable(value=”id”)获取占位符中的参数

@RequestMapping(value="show18/{name}/{id}")
    public String test18(Model model,@PathVariable()String name,@PathVariable()String id){
        model.addAttribute("msg", "接收到的参数为:"+name+"..."+id);
        return "hello";
    }

注意:注解中的(value=”id”)可以省略,但是千万不要省。

接收普通的请求参数

@RequestParam(value=””, required=true/false, defaultValue=””)
1.value:参数名
2.required:是否必须,默认为true,标示请求参数中必须包含该参数,如果不包含则抛出异常
3.defaultValue:默认参数值,如果设置了该值,required=true将失效(即使手动设置了也会失效),自动为false,如果请求中不包含该参数则使用默认值。

@RequestMapping(value = "show")
    public String test13(Model model,
            @RequestParam(value = "username", required = true, defaultValue = "lx") String username,
            @RequestParam(value = "name", required = false) String name, @RequestParam("id") Long id) {
        model.addAttribute("msg", "使用@RequestParam接收到的数据为:" + username + "-----" + name + "-----" + id);
        return "hello";
    }   
    请求url: http://localhost:8080/hello/show.do?id=110
    控制台输出为: 使用@RequestParam接收到的数据为:lx-----null-----110  

获取cookie

@RequestMapping(value = "show22")
    public String test22(Model model, @CookieValue("JSESSIONID")String jsessionid) {
        model.addAttribute("msg", "jsessionid:" + jsessionid);
        return "hello";
    }

注意@CookieValue(“JSESSIONID”)必须大写
此时当cookie中没有该属性时,可以在defaultValue属性中设置一个默认值:defaultValue=”101”

pojo对象的绑定

SpringMVC会将请求参数名和POJO实体中的属性名(set方法)进行自动匹配,如果名称一致,将把值填充到对象属性中,并且支持级联(例如:user.dept.id)。
当自动讲数据封装到User对象中之后,如果还想单独获取某个或几个参数,可以单独设置形参获取。

@RequestMapping(value="show24")
    public String test24(Model model,User user,@RequestParam(value="name")String name) {
        model.addAttribute("msg","打印参数:"+user+"..."+name);
        return "hello";
    }

集合的绑定

集合元素为pojo类型

如果List中封装的是pojo对象,不能够直接在方法中形参中使用List,需要将List对象包装到一个类中才能绑定
要求:提交请求的表单中input标签的name属性的值和集合中元素的属性名一致。

1、创建一个UserVO包装List集合  
public class UserVO {
    private List<User> users;
    get和set方法 重写toString方法  
    }
2、Controller方法:  
@RequestMapping(value="show")
    public String test25(Model model,UserVO userVO) {
        model.addAttribute("msg","打印参数:"+userVO.toString());
        return "hello";
    }  
3、将表单input标签中的name属性值加上user[角标](从0开始每个User对象使用一个角标)  

集合中元素为基本类型

直接用@RequestMapping注解接收

猜你喜欢

转载自blog.csdn.net/luoxiao2554/article/details/80484721