zoukankan      html  css  js  c++  java
  • 第三天:SpringMVC--表单数据的接收(重点)

    表单数据的接收

    表单提交的数据也就是请求数据,分为Get和Post两种方式提交。

    springmvc接收表单数据的方式有:

    1. @RequestParam 注解

    1     @RequestMapping(value = "/xxxx.do")  
    2     public void create(@RequestParam(value="userName") String userName) throws Exception {  
    3           
    4     }  

    2. @PathVariable 注解

    1     @RequestMapping(value="/{groupId}.do")  
    2     public void detail(@PathVariable long groupId){  
    3         groupRepository.selectOne(groupId);  
    4     }  

    3. @ModelAttribute 注解

    1     @RequestMapping(value = "/xxxx.do")  
    2     public String create(@ModelAttribute User user) throws Exception {  
    3         userService.insert(user);  
    4         return "redirect:/user/create.do";  
    5     }  

    4. Request对象

    1     public ModelAndView method1(HttpServletRequest request,  
    2                HttpServletResponse respnose) throws ServletException, IOException {  
    3            Map model = new HashMap();  
    4            model.put("message", "你调用的是方法1");  
    5             return new ModelAndView("/index.jsp", "model", model);  
    6      }  

    (一)接收表单提交数据

    1、接收普通类型参数

    (1)创建控制器方法:

    @RequestMapping("p1")

    public String p1(String name, int age) {

    System.out.println("前台的参数值" + name + ":" + age);

    return "success";

    }

    (2)创建表单

     <form action="p1">

        name:<input type="text" name="name"><br>

        age:<input type="text" name="age"><br>

        <input type="submit" value="提交">

    </form>

    注意:表单中的input控件属性name的值的名称要和控制器方法参数的名称保持一致

     

    2、普通的pojo绑定

    (1)创建类pojo Person 提供setget方法

    public class Person implements Serializable {

        private Integer id;

        private String name;

        private Double sal;

    private Boolean marry;

     

    (2)创建控制器方法

    @RequestMapping("p3")

    public String p3(Person per, String name) {

    System.out.println("前台的参数值" + per + ":" + name);

    return "success";

    }

    (3)创建表单

       <form action="p3">

           id:<input type="text" name="id"><br>

           name:<input type="text" name="name"><br>

           sal:<input type="text" name="sal"><br>

           marr:<input type="text" name="marry"><br>

           <input type="submit" value="提交">

       </form>

    注意: 表单中input控件的name属性的值必须要pojo对象中的属性名称保持一致,这样就可以完成参数绑定

     

    3、复杂的pojo绑定

    (1)创建pojoPerson 提供setget方法

    public class Person implements Serializable {

        private Integer id;

        private Boolean marry;

    private Dog dog;

    (2) 创建pojoDog 提供setget方法

    public class Dog implements Serializable {    

    private String name;

    private String furcolor;

    (3) 创建控制器方法

    @RequestMapping("p4")

    public String p4(Person per) {

    System.out.println("前台的参数值" + per);

    return "success";

    }

    (4)创建表单

     <form action="p4">

         id:<input type="text" name="id"><br>

         name:<input type="text" name="name"><br>

         dog.name:<input type="text" name="dog.name"><br>

         dog.furcolor:<input type="text" name="dog.furcolor"><br>           

         <input type="submit" value="提交">

      </form>

     

    4List集合类型绑定

    (1)创建普通pojoPerson

    public class Person implements Serializable {

        private Integer id;

        private String name;

    private List<Dog> dogs;

    (2)创建pojoDog 提供setget方法

    public class Dog implements Serializable {    

    private String name;

    private String furcolor;

     

    (3)创建控制器方法

    @RequestMapping("p5")

    public String p5(Person per) {

    System.out.println("前台的参数值" + per);

    return "success";

    }

    (4)创建表单

     <form action="p5">

          id:<input type="text" name="id"><br>

          name:<input type="text" name="name"><br>

          dog.name:<input type="text" name="dogs[0].name"><br>

          dog.furcolor:<input type="text" name="dogs[0].furcolor"><br>  

          dog.name:<input type="text" name="dogs[1].name"><br>

          dog.furcolor:<input type="text" name="dogs[1].furcolor"><br>

          dog.name:<input type="text" name="dogs[2].name"><br>

          dog.furcolor:<input type="text" name="dogs[2].furcolor"><br>          

          <input type="submit" value="提交">

      </form>

    5Map集合类型

    (1)创建普通pojoPerson

    public class Person implements Serializable {

        private Integer id;

    private String name;

    private Map<String,Dog> dogs

    (2)创建pojoDog 提供setget方法

    public class Dog implements Serializable {    

    private String name;

    private String furcolor;

     

    (3)创建控制器方法

    @RequestMapping("p5")

    public String p5(Person per) {

    System.out.println("前台的参数值" + per);

    return "success";

    }

    (4)创建表单

    <form action="p6">

         id:<input type="text" name="id"><br>

         name:<input type="text" name="name"><br>

         dog.name:<input type="text" name="dogs['x'].name"><br>

         dog.furcolor:<input type="text" name="dogs['x'].furcolor"><br>  

         dog.name:<input type="text" name="dogs['y'].name"><br>

         dog.furcolor:<input type="text" name="dogs['y'].furcolor"><br>   

         <input type="submit" value="提交">

     </form>

    6Set集合类型

    (1)创建普通pojoPerson

    public class Person implements Serializable {

    private Integer id;

    private String name;

    private Set<Dog> dogs = new HashSet<Dog>();

    public Person() {

    dogs.add(new Dog());

    dogs.add(new Dog());

    }

    (2)创建pojoDog 提供setget方法

    public class Dog implements Serializable {    

    private String name;

    private String furcolor;

     

    (3)创建控制器方法

    @RequestMapping("p5")

    public String p5(Person per) {

    System.out.println("前台的参数值" + per);

    return "success";

    }

    (4)创建表单

    <form action="p7">

         id:<input type="text" name="id"><br>

         name:<input type="text" name="name"><br>

         dog.name:<input type="text" name="dogs[0].name"><br>

         dog.furcolor:<input type="text" name="dogs[0].furcolor"><br>  

         dog.name:<input type="text" name="dogs[1].name"><br>

         dog.furcolor:<input type="text" name="dogs[1].furcolor"><br>

         dog.name:<input type="text" name="dogs[2].name"><br>

         dog.furcolor:<input type="text" name="dogs[2].furcolor"><br>     

         <input type="submit" value="提交">

     </form>

    注意:如果使用set集合进行绑定,需要在pojo类中提前初始化集合对象,并在pojo类中添加构造方法指定集合存放元素的个数

     

    (二) 自定义类型转换器

    针对表单参数中不能自动转换的类型如:Date日期类型我们可以自己制定类型转换器步骤如下:

    1、自定义类实现接口Converter

    public class DateConverter implements Converter<String,Date> {

    public Date convert(String info) {

    Date date = null;

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    try {

    date = sdf.parse(info);

    } catch (ParseException e) {

    e.printStackTrace();

    }

    return date;

    }

    }

    2、声明类型转换器

       <bean

    id="converterservice"

    class="org.Springframework.format.support.FormattingConversionServiceFactoryBean">

             <property name="converters">

                   <list>

                        <bean class="com.offcn.converter.DateConverter"></bean>                       

                   </list>

             </property>

       </bean>

    3、使用类型转换器服务

    <mvc:annotation-driven conversion-service="converterservice" />

    在项目中如果出现日期类型数据就可以完成自动类型转换

    (三)默认参数绑定

    1、绑定ServletAPI

    @RequestMapping("param1")

    public String param1(

    HttpServletRequest request,HttpServletResponse response,HttpSession session) {

    直接使用绑定的参数完成业务处理

    }

    2、绑定Map集合

    放入map集合中的内容等价于放入request域中的共享数据

    @RequestMapping("a2")

    public String  a2(Map<String,Object> map) {

    map.put("list","查询数据的集合");

    map.put("total",345);

    map.put("currentPage",2);

    return "success";

    }

    3Model  ModelMap

    @RequestMapping("a3")

    public String  a3(Model model,ModelMap modelMap) {

        model.addAttribute("password",123);  

        modelMap.put("a","abc");

        modelMap.addAttribute("b","kkk");

    return "success";

    }

    4、绑定 ModelAndView

    @RequestMapping("a4")

    public ModelAndView  a4(ModelAndView mav) {

        mav.setViewName("success");

        mav.addObject("nlist","集合数据");

    return mav ;

    }

  • 相关阅读:
    c# 动态调用.net编写的webservices接口
    Oracle序列(Sequence)创建、使用、修改、删除
    PLSQL Developer导入Excel数据
    asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
    PowerDesigner将PDM导出生成WORD文档
    JS魔法堂:再识instanceof
    Design Pattern: Not Just Mixin Pattern
    Design Pattern: Observer Pattern
    Architecture Pattern: Publish-subscribe Pattern
    ES6 Features系列:Template Strings & Tagged Template Strings
  • 原文地址:https://www.cnblogs.com/masterhxh/p/13853564.html
Copyright © 2011-2022 走看看