Spring MVC的参数装配

自动装配

  零散数据的装配

  装配原则:传递参数名和方法接收参数名一致

  表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/threeController/myform" method="post">
        账号:<input type="text" name="uname"><br>
        密码:<input type="password" name="upwd">
        <input type="submit" value="提交">
    </form>
</body>
</html>

  目标页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>欢迎</title>
</head>
<body>
欢迎, ${userCode}
</body>
</html>

  控制器

@Controller
@RequestMapping("/threeController")
public class threeController {
    @RequestMapping("/myform")
    public ModelAndView myform(String uname, String upwd){
        ModelAndView mv=new ModelAndView();
        System.out.println(uname);
        System.out.println(upwd);
        mv.addObject("userCode",uname);
        mv.setViewName("myform");
        return mv;
    }
}

 

 

 

 

 

 

  手动装配

 

  手动装配@RequestParam name代表页面发送的参数名字

  required代表参数是否必须传递 false代表可以不传递,默认为true defaultValue代表默认

  model代表给页面传递的数据

@RequestMapping("/myform")
    public ModelAndView myform(@RequestParam(name="uname",required=false,defaultValue="梅川酷子")String uname, 
                   @RequestParam(name="upwd",required=false,defaultValue="admin")String upwd){ ModelAndView mv=new ModelAndView(); System.out.println(uname); System.out.println(upwd); mv.addObject("userCode",uname); mv.setViewName("myform"); return mv; }

 

  restful风格

  get请求时,如果需要传递数据,那么则不能使用以往方式?name=xxx&age=yy

  但是现在要遵循restful风格,举例 xxx/yyy/zzz
  根据地址栏URL匹配拿值 使用@PathVariable(name=地址栏中的参数映射)

  说白了就是:除了 / 以外的符号不能出现

@RequestMapping(value = "/myform2/{uname}/{upwd}")
    public ModelAndView myform2(@PathVariable(name="uname")String uname, @PathVariable(name="upwd")String upwd){
        ModelAndView mv=new ModelAndView();
        System.out.println(uname);
        System.out.println(upwd);
        mv.addObject("userCode",uname);
        mv.setViewName("myform");
        return mv;
    }

 

 

 

  对象参数:

  传递的对象参数和对象中的属性名保持一致

public class UserInfo implements Serializable {
    private Integer user_id;
    private  String user_name;

    /**
     * 注入域属性
     * @return
     */
    private List<Teacher> teaList;
    private Teacher teacher;

    /*public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }*/

    public Integer getUser_id() {
        return user_id;
    }

    public void setUser_id(Integer user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public List<Teacher> getTeaList() {
        return teaList;
    }

    public void setTeaList(List<Teacher> teaList) {
        this.teaList = teaList;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "user_id=" + user_id +
                ", user_name='" + user_name + '\'' +
                ", teaList=" + teaList +
                ", teacher=" + teacher +
                '}';
    }
}

  页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/threeController/myform3" method="post">
        账号:<input type="text" name="uname"><br>
        密码:<input type="password" name="upwd"><br>
        info.name:<input type="text" name="user_name"/><br>
        info.id:<input type="text" name="user_id"/><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

  目标页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>欢迎</title>
</head>
<body>
欢迎, ${userCode}
</body>
</html>

  控制器

@RequestMapping(value = "/myform3")
    public ModelAndView myform3(UserInfo info){
        ModelAndView mv=new ModelAndView();
        System.out.println(info.toString());
        mv.addObject("userCode",info.getUser_name());
        mv.setViewName("myform");
        return mv;
    }

 

 

  域属性

  域属性传递:传递参数为:域属性.属性名

  页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/threeController/myform4" method="post">
        账号:<input type="text" name="uname"><br>
        密码:<input type="password" name="upwd"><br>
        info.name:<input type="text" name="Teacher.teacher_name"/><br>
        info.id:<input type="text" name="Teacher.teacher_id"/><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

 

  集合参数传递

  集合参数传递:集合名[下标].属性名

  页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/threeController/myform5" method="post">
        账号:<input type="text" name="uname"><br>
        密码:<input type="password" name="upwd"><br>
        info.name:<input type="text" name="teaList[0].teacher_name"/><br>
        info.id:<input type="text" name="teaList[1].teacher_id"/><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

 

 

posted @ 2019-11-10 17:57  梅川酷子灬  阅读(328)  评论(0编辑  收藏  举报