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>
  • 相关阅读:
    结婚也可以2.0!
    最近读书清单
    Win7旗舰版中的IIS配置asp.net的运行环境
    Google Chrome浏览器
    MySQL到NoSQL:数据的重思和查询方式的转换
    sqlserver游标概念与实例全面解说
    高效管理ASP.NET的JavaScript库
    如何提取网页中的flash
    如何手动启动tomcat
    tomcat单词缩写
  • 原文地址:https://www.cnblogs.com/ccw95/p/6164282.html
Copyright © 2011-2022 走看看