美文网首页
04参数绑定

04参数绑定

作者: RobertLiu123 | 来源:发表于2019-08-02 13:53 被阅读0次

    参数绑定(重要)
    有以下几种

    简单类型
    对象类型(简单对象)
    包装类绑定(对象里有对象)
    复杂类型绑定(数组 list map)

    第1节
    为了测试,先建立两个实体TabClass.java Student.java

    public class TabClass {
        private int classId;
        private String className;
    ....
    }
    
    
    public class Student {
    private int id;
    private String name;
    private String no;
    private String sex;
    private TabClass tabClass;
    .....
    }
    

    页面:

    <form action="<%=request.getContextPath()%>/student/add.action" method="post">
      id:<input type="text" name="id" value="123"/><br>
       姓名:<input type="text" name="name" value="陈昊"/><br>
      学号:<input type="text" name="no" value="0910"/><br> 
     sex:<input type="text" name="sex" value="男"/><br>
     <input type="submit" value="提交">
    </form>
    

    简单类型

    @RequestMapping("/goadd")
    public String goadd(){
        return "addstudent";
        
    }
    
    @RequestMapping("/add")
    public ModelAndView add(int id,String name,String no,String sex){
        System.out.println(id);
        System.out.println(name);
        System.out.println(no);
        System.out.println(sex);
        ModelAndView mav=new ModelAndView("hello");
        return mav;
        
    }
    

    后台接到前台参数后,重新命名的情况

    
    @RequestMapping("/add1")
    public ModelAndView add1(@RequestParam(value="id") int stuid,
             @RequestParam(value="name") String stuname){
        System.out.println(stuid);
        System.out.println(stuname);
        ModelAndView mav=new ModelAndView("hello");
        return mav;
        
    }
    

    解决中文编码问题:web.xml里配置编码过滤器

     <filter>
          <filter-name>CharacterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
         </init-param>
     </filter>
     <filter-mapping>
          <filter-name>CharacterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
     </filter-mapping>
    

    对象类型(简单对象)

    @RequestMapping("/add2")
    public ModelAndView add2(Student student){
        System.out.println(student.getId());
        ModelAndView mav=new ModelAndView("hello");
        return mav;
    } 
    

    第2节
    包装类绑定(对象里有对象)
    其中的 tabClass是Student实体里的属性名称

     <form action="<%=request.getContextPath()%>/student/add2.action" method="post">
      id:<input type="text" name="id" value="123"/><br>
       姓名:<input type="text" name="name" value="陈昊"/><br>
      学号:<input type="text" name="no" value="0910"/><br> 
     sex:<input type="text" name="sex" value="男"/><br>
     班级id<input type="text" name="tabClass.classId" value="16"/><br>
     班级名称<input type="text" name="tabClass.className" value="java16"/><br>
     <input type="submit" value="提交">
    </form>
    

    action不变

    @RequestMapping("/add2")
    public ModelAndView add2(Student student){
        System.out.println(student.getId());
        ModelAndView mav=new ModelAndView("hello");
        return mav;
    }
    

    checkbox绑定
    checkbox后台用数组接
    前台:

     爱好:<input type="checkbox" name="hobby" value="1"/>篮球
      <input type="checkbox" name="hobby" value="2"/>足球
      <input type="checkbox" name="hobby" value="3"/>排球
    

    后台实体里增加hobby数组

    public class Student {
        private int id;
        private String name;
        private String no;
        private String sex;
        private TabClass tabClass;
        private String[] hobby;
    ......
    }
    

    第三节
    复杂类型绑定(数组 list map)
    数组
    接收checkbox类型用数组类型。
    批量删除思路:
    1)checkbox----->选中------>提交到后台 name
    2)后台------>用数组接。 属性名
    3)前台name<----->后台数组的属性名
    前台代码:

    <form action="<%=request.getContextPath()%>/student/del.action" method="post">
     要删除的人员的id
     <input type="checkbox" name="id" value="1"/>李海锋
      <input type="checkbox" name="id" value="2"/>陈昊
      <input type="checkbox" name="id" value="3"/>王晓宇
     <input type="submit" value="提交">
     </form>
    
    后台action
    @RequestMapping("/del")
    public ModelAndView del(int[] id){
        for(int i:id){
            System.out.println(i);
        }
        ModelAndView mav=new ModelAndView("hello");
        return mav;
    }
    

    list
    集合类型(list map)的后台不能直接接,需要把集合封装到对象里。
    样例代码:

    public class ListVo {
      private List<Student> studentList;
    ......
    
    }
    

    页面:

    <form action="<%=request.getContextPath()%>/student/addStuds.action" method="post">
     第一个学生:姓名:<input type="text" name="studentList[0].name" />性别<input type="text" name="studentList[0].sex" /><br>
     第二个学生:<input type="text" name="studentList[1].name" />性别<input type="text" name="studentList[1].sex" /><br>
     <input type="submit" value="提交">
    </form>
    

    controller

    //批量添加 
    @RequestMapping("/addStuds")
    public ModelAndView addStuds(ListVo vo){
        for(Student s:vo.getStudentList()){
            System.out.println(s.getName());
        }
        ModelAndView mav=new ModelAndView("hello");
        return mav;
    }
    

    相关文章

      网友评论

          本文标题:04参数绑定

          本文链接:https://www.haomeiwen.com/subject/qvlldctx.html