springmvc接受请求参数以及数据回显

处理提交的数据

1.提交的域名称和处理方法的参数名一致
例如提交的URL为:
http://localhost:8080/springmvc_05_controller_war_exploded/test/t1?name=yf
处理的方法为

@Controller
@RequestMapping("/test")
public class UserController {
    @RequestMapping("/t1")
    public String test1(String name, Model model){
        //1.接收前端数据
        //2.将返回的结果传递给前端
        model.addAttribute("msg",name);
        //3。跳转视图

        return "test";

    }

}

2.提交的域名称和处理方法的参数名不一致
例如提交的URL为:http://localhost:8080/springmvc_05_controller_war_exploded/test/t1?username=yf
在方法的参数前面加上@RequestParam就可以使用别名来接受前端传递来的参数了。

@Controller
@RequestMapping("/test")
public class UserController {
    @RequestMapping("/t1")
    public String test1(@RequestParam("username") String name, Model model){
        //1.接收前端数据
        //2.将返回的结果传递给前端
        model.addAttribute("msg",name);
        //3。跳转视图
        return "test";

    }

}

建议:如果是需要从前端接收数据的参数,最好都加上@RequestParam,不管前端的参数是不是和方法中的参数同名,这样可以明显的看出方法中的哪些参数是从前端传递过来的。
3.从前端接收的是一个对象:id name age
例如URL地址为:http://localhost:8080/springmvc_05_controller_war_exploded/test/t2?id=1&name=yf&age=21
方法中的参数直接设置为一个对象就行

    @RequestMapping("/t2")
    public String test2(User user){
        System.out.println(user);
        return "test";
    }

输出的结果就是一个对象,说明从前端传递过来的数据都接收到了。
在这里插入图片描述

接收前端用户传递参数过程:

1.拿到参数的名字,如果参数的名字在方法的参数中有,可以直接使用
2.如果传递的是一个对象,拿参数的名字去匹配对象的字段,如果一致,就可以使用 ,否则就匹配不到。

数据回显

第一种通过ModelAndView

public class ControllerTest3 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView modelAndView = new ModelAndView();

        modelAndView.addObject("msg","ModelAndView");
        modelAndView.setViewName("test");
        return modelAndView;
    }
}

然后再去spring配置文件中注册一下controller就可以使用了。

<bean class="com.yf.controller.ControllerTest3" id="/test3"/>

id就是可以访问的地址。

第二种Model

@Controller
@RequestMapping("/test")
public class UserController {
    @RequestMapping("/t1")
    public String test1(@RequestParam("username") String name, Model model){
        //1.接收前端数据
        //2.将返回的结果传递给前端
        model.addAttribute("msg",name);
        //3。跳转视图
        return "test";

    }
}

基于注解的不需要配置bean对象了。

第三种 ModelMap使用起来和Model看起来无区别

对比:
Model:只有寥寥几个方法只适用于存储数据,简化了对Model对象的操作和理解。
ModelMap:继承了LinkedMap,除了实现自身的一些方法,同样的继承了linkedMap的方法和特性。
ModelAndView:可以在存储数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值