• SpringMVC基本类型绑定


    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>

      

  • 相关阅读:
    python
    C++的socket编程学习
    GooglePlay
    GooglePlay
    Admob
    cocos2dx
    cocos2dx
    cocos2dx
    cocos2dx
    浅谈白鹭Egret
  • 原文地址:https://www.cnblogs.com/a77355699/p/8046234.html
Copyright © 2020-2023  润新知