zoukankan      html  css  js  c++  java
  • Spring MVC——参数装填方式

    1. 默认支持类型HttpServletRequest、HttpServletResponse、HttpSession、Model、ModelMap

    测试路径:%项目根%/getAllEmp.action?empno=7788

     1 @RequestMapping(value="/getAllEmp")
     2     public String getAllEmp(HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model,ModelMap modelMap)
     3     {
     4         System.out.println("request:" + request.getParameter("empno"));
     5         
     6         System.out.println("response:" + response.getLocale().getCountry() +"-" + response.getLocale().getLanguage());
     7         
     8         System.out.println("session:" + session.getId());
     9         
    10         List<Emp> emps = empService.getEmp();
    11         
    12         model.addAttribute("emps", emps);
    13         
    14         modelMap.addAttribute("message", "查询雇员信息成功");
    15         
    16         return "empQuery";//实际解析名称: 前缀"/" + main + 后缀".jsp"   /main.jsp
    17     }

    2. 简单类型:整型,字符串,单精度/双精度,boolean类型[注意:这种方式只能用于get请求方式,如果为post请求,必须用request获取到参数]

    注意:1. 默认情况下,实际参数名称与形式参数名称一致
       2. 基本数据类型,建议使用其包装类型Integer、Boolean、Double、Float等

    测试路径:%项目根%/getEmpByEmpno.action?index=${status.index+1}

     1 @RequestMapping("/getEmpByEmpno")
     2     public String getEmpByEmpno(Model model,Integer index)
     3     {
     4         System.out.println("getEmpByEmpno:index参数值---" + index);
     5         
     6         Emp emp = empService.getEmpByEmpno(index);
     7         
     8         model.addAttribute("emp", emp);
     9         
    10         return "empUpdate";
    11     }

    2.1 简单类型:整型,字符串,单精度/双精度,boolean类型

    注意: 1. 默认情况下,实际参数名称与形式参数名称一致
        2. 基本数据类型,建议使用其包装类型Integer、Boolean、Double、Float等

              3. 当实际参数名称与形式参数名称不一致时,使用注解@RequestParam标明实际参数名称
              value:指定的实际参数名称
              required:true 参数必须带
              defaultValue:参数默认值


    测试路径:
    %项目根%/getEmpByEmpno_2.action?index=${status.index+1}
    %项目根%/getEmpByEmpno_2.action

     1 @RequestMapping("/getEmpByEmpno_2")
     2     public String getEmpByEmpno_2(Model model,@RequestParam(value="index",required=true,defaultValue="0")Integer index2)
     3     {
     4         System.out.println("getEmpByEmpno:index2参数值---" + index2);
     5         
     6         Emp emp = empService.getEmpByEmpno(index2);
     7         
     8         model.addAttribute("emp", emp);
     9         
    10         return "empUpdate";
    11     }

    3.简单的POJO(plain old java projects)对象

    注意:提交的参数名称必须与javaBean对象的属性名称一致
    例如:<input type="text" name="empno" value="${emp.empno}">中的name属性值必须与参数emp对象中的empno属性名一致

    4.包装的POJO对象: dept.dname dept.deptno

    5.自定义参数绑定

    (1) 定义类,并实现 org.springframework.core.convert.converter.Converter接口,同时重写convert()方法

     1 public class CustomerDateConverter implements Converter<String, Date> {
     2 
     3     @Override
     4     public Date convert(String param) {
     5         
     6         //将字符串类型转换为日期类型
     7         
     8         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     9         
    10         try {
    11             
    12             return sdf.parse(param);
    13             
    14         } catch (ParseException e) {
    15             e.printStackTrace();
    16         }
    17         
    18         return null;
    19     }

    注意:泛型中,第一个为传入参数类型,第二个为传出的指定格式的参数类型

    (2) 配置自定义参数转换器
    <!-- 自定参数绑定组件 -->
    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <!-- 配置转换器 -->
    <property name="converters">
    <list>
    <!-- 日期类型转换器 -->
    <bean class="com.neuedu.converter.CustomerDateConverter"></bean>
    </list>
    </property>
    </bean>

    (3)将自定义参数转换器注入到适配器
    <!-- 处理器适配器、处理器映射器 -->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

    6. 集合类 List
    注意:形式参数类型为引用类型Emp
    实际参数类型(List)传入时,name属性值subEmps[${status.index}].empno必须与Emp对象中的属性值subEmps一致
    <input type="text" name="subEmps[${status.index}].empno" value="${emp.empno}">

     1 @RequestMapping("/getSubEmps")
     2     public String getSubEmps(Model model,Integer index)
     3     {
     4         Emp emp = empService.getEmpByEmpno(index);
     5         
     6         List<Emp> subEmpList = emp.getSubEmps();
     7         
     8         model.addAttribute("subEmpList", subEmpList);
     9         
    10         return "subEmpQuery";
    11     }
    12     @RequestMapping("/updateSubEmp")
    13     public String updateSubEmp(Emp emp)
    14     {
    15         System.out.println("updateSubEmp:"+emp.getSubEmps());
    16         
    17         return "success";
    18 
    19     }

    6. 集合类  数组

    1 @RequestMapping("/deleteEmps")
    2     public String deleteEmps(Integer[] indexs)
    3     {
    4         //delete from emp where empno in(1, 2, 3, 5);
    5         System.out.println("deleteEmps:" +Arrays.toString(indexs));//[1, 2, 3, 5]
    6         
    7         return "success";
    8     }
     1 <c:forEach items="${emps}" var="emp" varStatus="status">
     2                 <tr>
     3                     <td><input type="checkbox" name="indexs" value="${status.index+1}">${status.index+1}</td>
     4                     <td>${emp.empno}</td>
     5                     <td>${emp.ename}</td>
     6                     <td>${emp.job}</td>
     7                     <td><fmt:formatDate value="${emp.hiredate}" pattern="yyyy-MM-dd"/></td>
     8                     <td>${emp.salary}</td>
     9                     <td>${emp.comm}</td>
    10                     <td>${emp.dept.dname}</td>
    11                     <td>
    12                         <a href="getEmpByEmpno.action?index=${status.index+1}">修改</a>
    13                         <a href="getEmpByEmpno_2.action?index=${status.index+1}">修改_2</a>
    14                         <a href="#?index=${status.index+1}">删除</a>
    15                         <a href="getSubEmps.action?index=${status.index+1}">查看下属</a>
    16                     </td>
    17                 </tr>
    18             </c:forEach>
  • 相关阅读:
    231. Power of Two
    204. Count Primes
    205. Isomorphic Strings
    203. Remove Linked List Elements
    179. Largest Number
    922. Sort Array By Parity II
    350. Intersection of Two Arrays II
    242. Valid Anagram
    164. Maximum Gap
    147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/ccw95/p/6164282.html
Copyright © 2011-2022 走看看