SpringMVc 随笔3 ,注解入参pathVariable,requestparam,和modelAttributes和返回值,modelAndView,map

1.如果要从浏览器向控制器传入参数,有两个注解可以使用,一个是@PathVariable,一个是@RequestParam。

其中,@PathVariable用于类似REST风格的入参,如/getEmp/12,这样子的。

@RequestParam,用于/getEmp?user=xxx&password=xxx,这样的入参。

示例如下,在注解中,如果只有一个参数,即value=,,默认的value可以省略不写

package cn.taotao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class EmployeeController {
    @RequestMapping("/getEmp")
    public String getEmp() {
        return "success";
    }

    @RequestMapping("/getEmp01/{id}")
     public String getEmp01(@PathVariable("id") Integer id) {
         System.out.println("id="+id);
        return "success";
     }

    @RequestMapping("/getEmp02") 
    public String getEmp02(@RequestParam("username") String username,@RequestParam("password") String password) {
        System.out.println("username= "+username+",pasword="+password);
        return "success";
    }
}

 

jsp页面如下

<html>
<body>
<h2>Hello World!</h2>
<a href="getEmp01/1332">get pathVariable</a>
<br><br><br>
<a href="getEmp02?username=xxxxx&password=765678">get RequestParam</a>
<br>
<br>
<a href="getEmp">getEmp</a><br>
</body>
</html>

 

返回值类型,有两个,最常用的是ModelAndView,另一个是Map,,系统会自动把map类型,或者list类型,封装成modelAndView类型。

@RequestMapping("/testMap")
    public String testMap(Map<String, Object> map){
        System.out.println(map.getClass().getName()); 
        map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));
        return "success";
    }
    
   
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        String viewName = "success";
        ModelAndView modelAndView = new ModelAndView(viewName);
        
     
        modelAndView.addObject("time", new Date());
        
        return modelAndView;
    }
    

 modelAttribute的属性是用来提前赋值的。比如修改一个表格,系统中有5个字段,但是表格中有4个字段,其他的一个,可能被置空,用上modelAttribute后,可以把数据库的提前读出来,不会被置空。

posted @ 2019-11-15 11:35  琴声清幽  阅读(294)  评论(0编辑  收藏  举报