SpringMVC基本参数绑定(7种)

  1、默认参数

HttpServletRequest
HttpServletResponse
HttpSession

示例:
@RequestMapping("edit.action")
public ModelAndView  editShop(HttpServletRequest request){
       String name=  request.getParameter("id");
} 

  2、绑定基本类型

//要求:该方法的形参名称必须和请求路径中的name值一致,尽量使用包装类型
//方式一:返回值类型为ModelAndView
@RequestMapping("自己声明的映射路径")
public ModelAndView edti(int id){//id与请求参数的name值一致
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("name值","xxx");//将xxx对象以键值对的形式放入request共享域中,通过name值获取该对象
    modelAndView.setsetViewName("itemList");//将页面的逻辑名称放入(前提:配置文件中已声明页面的前缀和后缀)
    return modelAndView;
}
//方式二:改变返回值类型及形参
@RequestMapping("自己声明的映射路径")
public String query(Model model){
    //Model 数据模型对象,主要作用添加属性 
    //ModelMap和Model的用法一致
    model.addAttribute("name值","xxx");//将xxx对象以键值对的形式放入request共享域中,通过name值获取该对象
    return  "itemList";// 返回值为页面的逻辑名称(前提:配置文件中已声明页面的前缀和后缀)      
} 

  3、注解参数绑定

//@RequestParam(name="id") Integer idss
//含义:把请求参数名称为id的值赋值给变量idss  
@RequestMapping("itemEdit.action")
public String editShop02(@RequestParam(name="id") Integer idss,ModelMap modelMap) {
     System.out.println(idss);
     return "editItem";
 } 

  4、绑定pojo类

// 需求: 把修改的内容提交封装到pojo类
//前提:提交的表单的name名必须跟pojo类中成员变量名一一对应
public String update(Object object){
    System.out.println(object);
   return "success";           
} 

  5、设置编码,解决乱码问题

eb.xml中配置如下代码:
<!-- 解决SpringMVC提交乱码问题  ,配置SpringMVC提供的过滤器CharacterEncodingFilter-->
   <filter>
       <filter-name>encodingFilter</filter-name>
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
       <!-- 该filter初始化的时候添加编码FilterConfig -->
          <init-param>
             <param-name>encoding</param-name>
             <param-value>utf-8</param-value>
          </init-param>
   </filter> 
   <filter-mapping>
       <filter-name>encodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping> 

  6、绑定包装pojo类

需求:使用包装的pojo类来接收查询条件.
​ 实现方式一:传统的方式,使用HttpServletRequest 的request形参来接收你的查询条件。
​ 实现方式二:在形参中使用保证的pojo类来接收。
分析特点:
​ 页面传递参数的特点:变化性比较强。条件可能不固定。
​ 包装类是对原来的pojo类进行扩充,提高程序的扩展性。

创建的包装pojo类:

//包装查询条件
public class QueryVo {
    //原有的类,保持完整性
    private Shop shop;
    //包装的类 ,扩展功能
    private ShopVo shopVo;
    set/get.....  toString().....
}
//包装Shop实体类
public class ShopVo  extends Shop{  
    //在以后业务需求可能变化的情况下扩充新的属性  (提高程序的可扩展性)
    
    //1.添加新的属性,例如:原价,打折价。
    //2.批量删除,接收多个id值,可能是多个集合或者数组属性
} 
控制器中的方法:
     @RequestMapping("queryitem.action")
     public String   queryShopByCondition(QueryVo queryVo) {
         System.out.println(queryVo);
         return "success";
     } 
jsp页面中搜索条件如下:
    <form action="${pageContext.request.contextPath }/queryitem.action"
        method="post">
        查询条件:
        <table width="100%" border=1>
            <tr> 
                <!--其中name="shopVo.shop_id"和name="shopVo.shop_name" 表示的含义:
        将提交的数据封装到查询包装类中成员变量shopVo中,而查询的条件name,id是包装类中的属性-->
                <td>商品编号:<input type="text" name="shopVo.shop_id" /></td>
                <td>商品名称:<input type="text" name="shopVo.shop_name" /></td>
                <td><input type="submit" value="查询" /></td>
            </tr>
        </table>
    </form> 

 7、自定义参数绑定

根据业务需求决定数据类型转化

// Converter<Soruce, Target>  source原本的数据类型  Target 目标数据类型
public class DateConverter  implements Converter<String, Date> {
    @Override
    public Date convert(String source) {
        // TODO Auto-generated method stub
        SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date  = format.parse(source);
            return date;
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
} 
<!-- 配置处理器 (RequestMappingHandlerMapping,RequestMappingHandlerAdapter)-->
    <!-- conversion-service添加转化服务 -->
    <mvc:annotation-driven conversion-service="aa"></mvc:annotation-driven>    
      <!-- 配置自己的转换器注入到SpringMVC中-->
      <bean  name="aa" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
          <!-- converters结果值是个集合 -->
        <property name="converters">
           <set>
              <bean  class="com.qf.converter.DateConverter"></bean>
           </set>
        </property>
      </bean>

 

  

posted on 2017-12-16 12:03  殇灬  阅读(208)  评论(0编辑  收藏  举报