SpringMVC基本参数绑定(7种)

SpringMVC基本参数绑定(7种)

1.默认参数支持

HttpServletRequest

HttpServletResponse

HttpSession

示例:

@RequestMapping("edit.action")

public ModelAndView editShop(HttpServletRequest request){

? String name= request.getParameter("id");

}

2.绑定基本类型(int,string,long,double.....)

第一种方式

//要求:该方法的形参名称必须和请求参数的name一致。

@RequestMapping("edit.action")

public ModelAndView editShop(int id){

? System.out.println(id);

}

第二种方式 改变返回类型及形参

     /**      *  域对象 :从小到大: pageContext,request,session(会话,用户session,目的是唯一标识用户sessionId),ServletContext(application)      *       * 方式一:Model模式      *       * @param id  接收请求参数id的值      * @param model  数据模型对象,一开始空的,{}  ,类似Map的键值对形式,主要是添加属性。      * @return  结果视图view的逻辑名称      */     @RequestMapping("itemEdit.action")     public  String  editShop(int id,Model model) {          System.out.println(id+"===="+model);          //业务逻辑处理得到数据模型,把数据模型结果交给model          for (Shop shop : list) {            if (shop.getShop_id()==id) {                //相当于数据存储到request域对象中 ,请求转发                 model.addAttribute("shop", shop);            }        }         return "editItem";               }

第三种方式

 //SpringMVC中内置了很多基本类型转化器。       //备注:SpringMVC接收基本类型的时候尽量使用包装类型:    包装类型具有对象的特征,可以为null.    /* @RequestMapping("itemEdit.action")     public String  editShop01(Integer id,Boolean flag,ModelMap modelMap) {         System.out.println(id+"==ffff=="+modelMap+"====="+flag);         for (Shop shop : list) {                if (shop.getShop_id()==id) {                    modelMap.addAttribute("shop", shop);                }            }         return "editItem";     }*/

3.注解参数绑定

     //扩展了解     //@RequestParam(name="id") Integer idss     //含义:把请求参数名称为id的值赋值给变量idss     @RequestMapping("itemEdit.action")     public String editShop02(@RequestParam(name="id") Integer idss,Boolean flag,ModelMap modelMap) {         System.out.println(idss+"==ffff=="+modelMap+"====="+flag);         for (Shop shop : list) {                if (shop.getShop_id()==idss) {                    modelMap.addAttribute("shop", shop);                }            }         return "editItem";     }

4.绑定pojo类

需求: 把修改的内容提交封装到pojo类

 /**      * 提交的表单的name名必须跟pojo类中成员变量名一一对应。      * @param shop      * @return      */     @RequestMapping("updateitem.action")     public  String updateShop(Shop shop) {         System.out.println(shop);         return "success";      }

5.解决乱码问题

web.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.自定义参数绑定

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

需求:修改商品页面转化日期。

7.1定义一个类型转换器

package com.qf.converter;?import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;?import org.springframework.core.convert.converter.Converter;?/** * 在SpringMVC的转化器类的基础上进行转化日期 * @author Administrator * * 开发者自己定一个日期转化类,该转化器需要在springmvc.xml中配置声明 *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;    }}

7.2 springmvc.xml中配置

    <!-- 配置处理器 (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>
时间: 2024-10-29 10:46:25

SpringMVC基本参数绑定(7种)的相关文章

springmvc(2)--参数绑定

一.以实例来看springmvc各种参数绑定方式 先定义个dto类: public class RestInDto implements Serializable { private static final long serialVersionUID = -5461373449802431627L; private String userName; private BigDecimal salary; private boolean isVip; private int id; ......

SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编写均建立在前文SpringMVC学习(五)——SpringMVC的参数绑定的案例基础之上,因此希望读者能仔细阅读这篇文章. 绑定数组 现有这样一个需求:在商品列表页面选中多个商品,然后删除之.下面是我对该需求的分析:此功能要求商品列表页面中的每个商品前有一个checkbook(复选框),选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id批量删除商品信息. 首先将itemList.jsp页面改

SpringMVC初始化参数绑定--日期格式

一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:component-scan base-package="cn.happy.controller"></context:component-scan> ②:在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper

springmvc 的参数绑定

1.springmvc的参数绑定的过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上. springmvc中,接收页面提交的数据是通过方法形参来接收.而不是在controller类定义成员变更接收!!!!(单例的哦) 直接在controller方法形参上定义下边类型的对象,就可以使用这些对象.在参数绑定过程中,如果遇到下边类型直接进行绑定. 1)HttpServletRequest:通过request对象获取请求信息 2)Htt

SpringMVC学习(五)——SpringMVC的参数绑定

SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案例代码的编写均建立在前文SpringMVC学习(四)——Spring.MyBatis和SpringMVC的整合的案例基础之上,因此希望读者能仔细阅读这篇文章. 默认支持的数据类型 现在有这样一个需求:打开商品编辑页面,展示商品信息.这是我对这个需求的分析:编辑商品信息,需要根据商品id查询商品信息,然后展示到页面.我这里假设请求的url为/itemEdit.action,由于我想要根据商品id查询商品信息,所以需要传

SpringMVC【参数绑定、数据回显、文件上传】

前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定... 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用request对象.Model对象等等,其实是不是可以随便把参数写上去都行???其实并不是的... Controller方法默认支持的参数类型有4个,这4个足以支撑我们的日常开发了 HttpServletRequest HttpServl

SpringMvc之参数绑定注解详解

引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据.为了找出原因,便对参数绑定(@RequestParam. @RequestBody. @RequestHeader . @PathVariable)进行了研究,同时也看了一下HttpMessage

二、Springmvc+Mybatis 参数绑定之默认参数绑定 简单类型绑定 POJO绑定 POST乱码问题

web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/

什么是springMvc的参数绑定?

参数绑定通俗来讲就是从页面传过来的数据通过SpringMvc进行接收.接收的数据类型可以有: (1)SpringMvc默认支持的类型:request.session.application等. (2)简单数据类型:String.Integer等. (3)pojo类型. (4)pojo包装类型.我们在搜索操作的时候可以使用pojo包装类型. (5)自定义参数.比如时间的类型的Date,而从页面接收的类型为String,为了将String类型转换为Date类型,我们需要定义转换器进行参数的转换. (