8.参数接收与数据回显

8.参数接收与数据回显

8.1 处理前端起脚数据

1.如果提交参数的name和Controller的参数name一样,就会直接获取到

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Index</title>
  </head>
  <body>
  <form action=/test>
    <input type="text" name="username">  <!--name=username-->
    <input type="submit">
  </form>
  </body>
</html>
@Controller
public class TestController{
    //模板URL ,会直接通过 / 的形式绑定a与b
    @GetMapping("/test")
    //参数名为 username , 可以直接获取到前端名为username的参数
    public String test(Model model,String username) throws IOException {
        //封装数据
        model.addAttribute("msg",username);
        System.out.println(username);
        return "hello";
    }
}

2.如果提交的name和参数名不同 ,使用注解@RequestParam

@Controller
public class TestController{
    //模板URL ,会直接通过 / 的形式绑定a与b
    @GetMapping("/test")
    //使用@RequestParam注解 , 参数name会接收到name=username的前端参数
    public String test(Model model,@RequestParam("username") String name) throws IOException {
        //封装数据
        model.addAttribute("msg",name);
        System.out.println(name);
        return "hello";
    }
}

3.如果前端提交的是一个对象

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Index</title>
  </head>
  <body>
  <form action=/user/t1>  <!--传递一个User对象的所有属性-->
    <input type="text" name="name">
    <input type="text" name="id">
    <input type="text" name="age">
    <input type="submit">
  </form>
  </body>
</html>

Controller自动解析name对应类的属性名

@Controller
@RequestMapping("/user")
public class UserController {
    @GetMapping("/t1")
    public String test1(User user) {
        //前端接收的是一个对象 : id name age
        /*
        * 1.接受前端用户传递的参数,判断参数的名字
        * 2.假设传递的是一个User对象,匹配User对象中的字段名,名字一致就可以匹配得到 (name与属性名对应)
        * */
        //如果不一致,返回null
        System.out.println(user);
        return "hello";
    }
}
User(id=321, name=123, age=123)

8.2 数据回显到前端

  1. 通过ModelAndView (回显数据的同时返回视图页面)

    public class HelloController implements Controller {  //实际上还是一个Servlet
        @Override
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            //模型和视图
            ModelAndView mv = new ModelAndView(); //一个中间层ModelAndView
            //封装对象,放在ModelAndView中
            mv.addObject("msg","HelloSpringMVC");  
            //封装要跳转的视图,放在ModelAndView中
            mv.setViewName("hello");
            return mv; //返回这个ModelAndView , 通过解析其中的数据,得到要返回的数据和对应页面 
        }
    }
    
  2. 通过Model

    @Controller
    @RequestMapping("/user")
    public class UserController {
        @GetMapping("/t1")
        public String test1(User user, Model model) {  //model为参数,可以携带数据返回前端
            //前端接收的是一个对象 : id name age
            /*
            * 1.接受前端用户传递的参数,判断参数的名字
            * 2.假设传递的是一个User对象,匹配User对象中的字段名,名字一致就可以匹配得到
            * */
            System.out.println(user);
            model.addAttribute(user);  //利用model把user传给前端
            return "hello";
        }
    }
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Test</title>
    </head>
    <!--获取传过来的值-->
    ${user.id}  
    <br/>
    ${user.name}
    <br/>
    ${user.age}
    </body>
    </html>
    
  3. 通过ModelMap (拥有LinkedMap的全部功能,特性更多)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值