Spring MVC请求参数绑定

所谓请求参数绑定,就是在控制器方法中,将请求参数绑定到方法参数上

  • @RequestParam

绑定单个请求参数到方法参数上

@RequestParam("id") Integer id

将请求参数名为id的变量,绑定到id参数上,如果不知道@RequestParam值,默认从请求参数中取和变量名相同的请求参数

@RequestParam(value = "id",required = false) Integer id

可以通过指定required参数来指定是否必须有这个请求参数,默认是true的。如果true了,那么当出现无法正常参数绑定的话,就会报错。

  • @PathVariable

绑定URI中的模板变量到方法参数上

@PathVariable("id") String id
<a href="${pageContext.request.contextPath}/testModule/123/save.do">URI模板变量值绑定</a>

 1 package org.zln.myWeb.controller;
 2
 3 import org.apache.logging.log4j.LogManager;
 4 import org.apache.logging.log4j.Logger;
 5 import org.springframework.stereotype.Controller;
 6 import org.springframework.ui.Model;
 7 import org.springframework.web.bind.annotation.PathVariable;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9
10 /**
11  * Created by sherry on 16/8/18.
12  *
13  */
14 @Controller
15 @RequestMapping("/testModule/**")
16 public class T00_TestController {
17
18     private Logger logger = LogManager.getLogger();
19
20     @RequestMapping("/{num}/save.do")
21     public String testPathVariable(@PathVariable("num") String num, Model model){
22         logger.info("模板变量:"+num);
23         model.addAttribute("num",num);
24         return "testPathVariable";
25     }
26 }

控制器

模板变量的值:<c:out value="${num}"/><br/>
  • @CookieValue

绑定Cookie值

  • @RequestHeader

绑定请求头

请求参数如果是一个普通的POJO,带有setter方法,Spring MVC会自动将表单参数注入到POJO的成员变量中

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
    <title>Title</title>
    <meta charset="UTF-8"/>
</head>
<body>

    <form action="${pageContext.request.contextPath}/testModule/testModelValue.do" name="testModelValue">
        <table>
            <thead>演示@ModelValue</thead>
            <tbody>
                <tr>
                    <td>姓名:</td>
                    <td>
                        <input type="text" placeholder="输入姓名..." name="name"/>
                    </td>
                </tr>
                <tr>
                    <td>年龄:</td>
                    <td>
                        <input type="text" placeholder="输入年龄..." name="age"/>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" value="提交请求" />
                    </td>
                </tr>
            </tbody>
        </table>
    </form>

</body>
</html>

表单

    @RequestMapping("testModelValue.do")
    public String testModelValue(T00_TestModelValue t00_testModelValue){
        logger.info("参数对象:"+t00_testModelValue);
        return "testModelValueUI";
    }

处理方法

  • @SessionAttribute

绑定请求到session范围

  • @RequestBody

将内容区数据绑定到方法变量,并自动进行类型转换

  • @RequestPart

绑定 "multipart/data" 类型的数据,除了能绑定 @RequestParam能绑定的请求参数外,还能绑定上传的文件

一般请求参数绑定到方法参数上,也可以使用 request 类型的数据去获取,但是还是建议使用特定的注解将请求参数绑定到方法变量上,因为这样使用起来更简单。

时间: 2024-10-13 03:03:49

Spring MVC请求参数绑定的相关文章

Spring基础系列14 -- Spring MVC 请求参数的几种获取方法

Spring MVC 请求参数的几种获取方法 转载:http://www.cnblogs.com/leiOOlei/p/3658147.html 一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String n

关于spring mvc 请求参数校验使用中的坑 。 maven 生命周期,线程池杂识

//一.使用@Valid @NotNull 启动项目请求,参数为空, // 好像没有效果.原因是只加了jar包:javax.validation:validation-api,这个包是一个规范,并没有实现 // spring 的默认实现是 org.hibernate:hibernate-validator 加上即可. // 再次请求 返回400, //看日志是校验未通过,接下来就是校验异常后处理了.使用以下代码处理 @ResponseBody @ExceptionHandler(MethodAr

spring mvc请求参数中文乱码解决方案

POST 请求 在web.xml中加上增加过滤器 1 <filter> 2 <filter-name>encodingFilter</filter-name> 3 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 4 <init-param> 5 <param-name>encoding</param

mvc action 参数绑定——值提供器【学习笔记】

每次http请求的各种数据(表单数据.url的数据.路由数据等等)都保存在不同的IValueProvider接口的实现类中. 而IValueProvider接口的实现类是通过ValueProviderFactory创建的. 在mvc中原生的ValueProviderFactory有六种: ChildActionValueProviderFactory:根据给定的Controller上下文创建一个ChildActionValueProvider对象. FormValueProviderFactor

SpringMVC 完美解决PUT请求参数绑定问题(普通表单和文件表单)

一 解决方案 修改web.xml配置文件 将下面配置拷贝进去(在原有的web-app节点里面配置 其它配置不变) <!-- 处理PUT提交参数(只对基础表单生效) --> <filter> <filter-name>httpPutFormContentFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filt

springmvc:请求参数绑定集合类型

一.请求参数绑定实体类 domain: 1 private String username; 2 private String password; 3 private Double money; 4 5 private User user; 1 <%--把数据封装到Account类中--%> 2 <form action="param/saveAccount" method="post"> 3 姓名:<input type="

Spring MVC 使用矩阵变量绑定参数

RFC3986 定义了在 URI 中包含 name-value 的规范.随之在 Spring MVC 3.2 中出现了 @MatrixVariable 注解,该注解的出现使得开发人员能够将请求中的矩阵变量(MatrixVariable)绑定到处理器的方法参数中.而 Spring 4.0 更全面地支持这个规范,这也是 Spring 4.0 众多吸引人的新特性之一.接下来我们就一起来了解这个新特性的使用方式. 在 Matrix Variable 中,多个变量可以使用 “;”(分号)分隔,例如: /b

spring mvc 请求转发和重定向

spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景    需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料

Spring3 MVC请求参数获取的几种方法

一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMap model) { System.out.println(id); System.out.println(name);