SpringMVC中请求参数的接收主要有两种方式, 一种是基于HttpServletRequest对象获取, 另外一种是通过Controller中的形参获取

一  通过HttpServletRequest获取请求参数

  首先, 通过一个实例获取jsp页面中提交的参数

@RequestMapping("/itemEdit.action")
    public ModelAndView itemEdit (HttpServletRequest request) {
        //获取请求id信息
        String idStr = request.getParameter("id");
        int id = Integer.parseInt(idStr);
        //跟局id调用业务层查询对应数据
        Items items = itemService.findById(id);
        //创建modelandview对象
        ModelAndView modelAndView = new ModelAndView();
        //存储查询结果
        modelAndView.addObject("item", items);
        //页面转发
        modelAndView.setViewName("editItem");
        return modelAndView;
    }

  SpringMVC的Controller中默认支持的参数类型

HttpServletRequest, HttpServletResponse, HttpSession, Model/ModelMap, 绑定简单类型

二 通过Controller方法中的形参获取请求参数

  SpringMVC中支持通过方法的形参获取页面请求参数

@RequestMapping("/itemEdit")

public String itemEdit(Integer id, Model model) {

Items items = itemService.getItemById(id);

//向jsp传递数据

model.addAttribute("item", items);

//设置跳转的jsp页面

return "editItem";

}

形参中支持的数据类型:

参数类型推荐使用包装数据类型,因为基础数据类型不可以为null

整形:Integer、int

字符串:String

单精度:Float、float

双精度:Double、double

布尔型:Boolean、boolean

说明:对于布尔类型的参数,请求的参数值为true或false。

处理器方法:

public String editItem(Model model,Integer id,Boolean status) throws Exception

请求url:

http://localhost:8080/xxx.action?id=2&status=false

三 @RequestParam注解的使用

使用@RequestParam常用于处理简单类型的绑定。

value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报;

TTP Status 400 - Required Integer parameter 'XXXX' is not present

defaultValue:默认值,表示如果请求中没有同名参数时的默认值

定义如下:

public String editItem(@RequestParam(value="item_id",required=true) String id) {

}

形参名称为id,但是这里使用value=" item_id"限定请求的参数名为item_id,所以页面传递参数的名必须为item_id。

注意:如果请求参数中没有item_id将抛出异常:

四 绑定pojo类型

如果提交的参数很多,或者提交的表单中的内容很多的时候可以使用pojo接收数据。要求pojo对象中的属性名和表单中input的name属性一致。

页面定义如下;

<input type="text" name="name"/>

<input type="text" name="price"/>

Pojo定义:

请求的参数名称和pojo的属性名称一致,会自动将请求参数赋值给pojo的属性。

@RequestMapping("/updateitem")

public String updateItem(Items items) {

itemService.updateItem(items);

return "success";

}

注意:提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容。

五 绑定数组

@RequestMapping("/queryitem.action")
    public String queryItem (Model model, int[] ids) {
        //将查询结果保存在model中
        System.out.println(ids);
        //页面转发
        return "forward:/item/itemList.action";
    }

六 绑定表单提交的list集合

@RequestMapping("/queryitem.action")
    public String queryItem (QueryVo queryVo, Model model, int[] ids) {
        List<Items> itemList = itemService.findByQueryVo(queryVo);
        //将查询结果保存在model中
        model.addAttribute("itemList", itemList);
        System.out.println(queryVo.getItems().getName());
        System.out.println(queryVo.getItems().getPrice());
        //页面转发
        return "forward:/item/itemList.action";
    }

QueryVo中的参数

package cn.rodge.ssm.pojo;

import java.util.List;

public class QueryVo {
    private Items items;
    private Integer ids;
    private List<Items> itemList;

    public Integer getIds() {
        return ids;
    }
    public void setIds(Integer ids) {
        this.ids = ids;
    }
    public List<Items> getItemList() {
        return itemList;
    }
    public void setItemList(List<Items> itemList) {
        this.itemList = itemList;
    }
    public Items getItems() {
        return items;
    }
    public void setItems(Items items) {
        this.items = items;
    }
}

五 解决POST提交中文乱码的问题

  在web.xml中配置字符集编码过滤器

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

SpringMVC中参数绑定的更多相关文章

  1. springmvc(2)--参数绑定

    一.以实例来看springmvc各种参数绑定方式   先定义个dto类: public class RestInDto implements Serializable { private static ...

  2. springmvc(三) 参数绑定、

    前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...

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

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  4. SpringMVC中参数接收

    /** *  * SpringMVC中参数接收 * 1.接收简单类型 int String * 2.可以使用对象pojo接收 * 3.可以使用集合数据接收参数 * 页面: name="ids ...

  5. Springmvc中参数的绑定

    .处理器适配器在执行Handler之前需要把http请求的key/value数据绑定到Handler方法形参数上. 1.默认支持的参数类型: HttpServletRequest,HttpServle ...

  6. SpringMVC学习--参数绑定

    spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接收 ...

  7. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...

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

    前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定.. ...

  9. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

随机推荐

  1. 《java入门第一季》之面向对象(面向对象案例详解)

    通过几个小案例理重新回顾一下前面所写的内容,对面向对象的理解更加深刻的目的: 案例一: /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx( ...

  2. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法

    ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法 (ITU‑R 102/6号研究课题) (2007年) 范围 数字广播系统允许提供多媒体和数据广播应用,包括视频.音频.静态图像. ...

  3. linux下ruby使用tcl/tk编程环境设置

    正常情况下最新的ruby都是不带tcl/tk选项编译的,所以我们在运行tcl/tk代码时都会发生找不到tk库的错误.解决办法很简单只要以tcl/tk选项编译ruby即可. 这里以ubuntu 15.0 ...

  4. JAVA中重写equals()方法的同时要重写hashcode()方法

    object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法 ...

  5. 使用Material Design Tint和视图详解

    视图 首先来讲Material Design 视图的概念,在新的api中,新添加了z轴的概念,z轴垂直于屏幕,用来表现元素的层叠关系,z值(海拔高度)越高,元素离界面底层(水平面)越远,投影越重,这里 ...

  6. How tomcat works 读书笔记十二 StandardContext 下

    对重载的支持 tomcat里容器对重载功能的支持是依靠Load的(在目前就是WebLoader).当在绑定载入器的容器时 public void setContainer(Container cont ...

  7. 超高速前端开发工具——Emmet

    [由于 CSDN 不支持富文本编辑器写的文章迁移到 Markdown 编辑器中修改,已重发了一个重新排版的版本, 新版链接:http://blog.csdn.net/ys743276112/artic ...

  8. 以太坊智能合约虚拟机(EVM)原理与实现

    以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译 ...

  9. strtok函数读写冲突问题

    先上测试代码 #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int a ...

  10. SignUtil

    最近接的新项目 加密比较多  我就记录下. SignUtil是jnewsdk-mer-1.0.0.jar  com.jnewsdk.util中的一个工具类.由于我没有百度到对应的信息.所以我只能看源码 ...