文档章节

SpringMVC(六):@RequestParam注解

LevelCoder
 LevelCoder
发布于 2017/06/05 14:52
字数 728
阅读 24
收藏 0
点赞 0
评论 0

@RequestParam 映射请求方法参数绑定到指定web请求参数

@RequestParam源码 3中方法

value():值即请求参数的参数名

required():当前请求参数是否必须:默认true

defaultValue():请求参数默认值

/*
 * Copyright 2002-2012 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Map;

/**
 * Annotation which indicates that a method parameter should be bound to a web
 * request parameter. Supported for annotated handler methods in Servlet and
 * Portlet environments.
 *
 * <p>If the method parameter type is {@link Map} and a request parameter name
 * is specified, then the request parameter value is converted to a {@link Map}
 * assuming an appropriate conversion strategy is available.
 *
 * <p>If the method parameter is {@link java.util.Map Map&lt;String, String&gt;} or
 * {@link org.springframework.util.MultiValueMap MultiValueMap&lt;String, String&gt;}
 * and a parameter name is not specified, then the map parameter is populated
 * with all request parameter names and values.
 *
 * @author Arjen Poutsma
 * @author Juergen Hoeller
 * @since 2.5
 * @see RequestMapping
 * @see RequestHeader
 * @see CookieValue
 * @see org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
 * @see org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
 * @see org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter
 */
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {

	/**
	 * The name of the request parameter to bind to.
	 */
	String value() default "";

	/**
	 * Whether the parameter is required.
	 * <p>Default is {@code true}, leading to an exception thrown in case
	 * of the parameter missing in the request. Switch this to {@code false}
	 * if you prefer a {@code null} in case of the parameter missing.
	 * <p>Alternatively, provide a {@link #defaultValue() defaultValue},
	 * which implicitly sets this flag to {@code false}.
	 */
	boolean required() default true;

	/**
	 * The default value to use as a fallback when the request parameter value
	 * is not provided or empty. Supplying a default value implicitly sets
	 * {@link #required()} to false.
	 */
	String defaultValue() default ValueConstants.DEFAULT_NONE;

}

针对三种方法做不同测试

控制层

package com.levelcoder;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 
 * 描述:@RequestParam注解
 *
 * 作者:LevelCoder
 *
 * 邮箱:LevelCoder@126.com
 *
 * 日期:2017年6月5日 下午2:16:25
 *
 * 版本:V1.0.0
 */
@Controller
public class RequestParamController {

	/**
	 * @RequestParam value() 当前参数名称
	 * @param username
	 * @return
	 */
	@RequestMapping(value="/requestParams")
	public String requestParams(@RequestParam("username") String username){
		System.out.println("参数值:"+username);
		return "success";
	}
	
	/**
	 * 
	 * @RequestParam required() 表示当前参数是否为必须 true:必须 false:非必须
	 * @param username
	 * @return
	 */
	@RequestMapping(value="/requestParamsRequired")
	public String requestParamsRequired(@RequestParam(value="username",required = false) String username){
		System.out.println("参数值:"+username);
		return "success";
	}
	
	/**
	 * @RequestParam defaultValue() 表示当前参数 为空时赋予一个默认值
	 * @param username
	 * @return
	 */
	@RequestMapping(value="/requestParamsDefaultValue")
	public String requestParamsDefaultValue(@RequestParam(value="username",required = false,defaultValue="test") String username){
		System.out.println("参数值:"+username);
		return "success";
	}
}

 

测试index页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>@RequestParam 注解</p>
	
	<a href="requestParams?username=levelcoder">value</a>
	<a href="requestParamsRequired">required</a>
	<a href="requestParamsDefaultValue">defaultValue</a>
	
</body>
</html>

 

测试结果页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring MVC : RequestParam</title>
</head>
<body>
	恭喜LevelCoder:RequestParam 程序跑通了,继续学习吧
</body>
</html>

 

测试结果

 

至此@RequestParam介绍完毕 

demos地址:http://git.oschina.net/LevelCoder/demos 

 

© 著作权归作者所有

共有 人打赏支持
LevelCoder
粉丝 7
博文 63
码字总数 33282
作品 0
房山
高级程序员
SpringMVC后台获取前台参数的几种方式

我们以用户登录为例,用户登录涉及两个参数: 这是前台登录视图: 相应的前台源码: ------------------------------------------------------ 介绍SpringMVC最常用的3种取值方法 ----------...

文文1 ⋅ 05/13 ⋅ 0

学习SpringMVC——如何获取请求参数

  @RequestParam,你一定见过;@PathVariable,你肯定也知道;@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解...

Java团长 ⋅ 01/13 ⋅ 0

springcloud(三):服务提供与调用

文章概述 上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例。 案例中有三个角色: ...

AHUSKY ⋅ 06/12 ⋅ 0

Spring注解(一) @RequestMapping @RequestParam @PathVariable

@RequestMapping 将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上 @RequestParam 从request请求中取值,例如当前请求http://localhost:8080/springMVC/helloworld?a=1&b=2 public String ......

勤奋的蚂蚁 ⋅ 05/06 ⋅ 0

springmvc项目开发步骤详解

springmvc项目开发步骤: 第一步:导入包 1.spring-framework-3.2.8.RELEASE-distspring-framework-3.2.8.RELEASElibs 2.jstl.jar 3.standard.jar 4.commons-logging-1.1.1.jar 5.commons-logg......

xiejunbo ⋅ 2014/09/24 ⋅ 0

SpringMVC_使用

1.@RequestMapping 用法 SpringMVC中,@RequestMapping用来处理请求,比如XXX.do } 2:接收带参数的请求,接收用户请求参数值 请求1: /test/start.do?name=zhangsan 请求2: /test/start/zhan...

李长春 ⋅ 2011/09/15 ⋅ 0

SpringMVC常用注解标签详解

1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的Vie...

Java工程师-Distance ⋅ 05/20 ⋅ 0

Spring框架自学(四)注解注入

1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的Vie...

大二架构师 ⋅ 05/09 ⋅ 0

SpringMVC和Struts的区别

springmvc是单例,非线程安全 Struts2是线程安全的对每个请求都产生一个实例 springmvc的入口是Servlet,而Struts2的filter spring的前段控制器是DispatcherServlet Struts2的前端的核心控制...

ZR520 ⋅ 2016/11/03 ⋅ 0

spring mvc获取路径参数的几种方式

SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视...

浅夏 ⋅ 2014/03/18 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长...

颖辉小居 ⋅ 15分钟前 ⋅ 0

利用有限制通配符提升API灵活性(28)

1、参数化类型是不可变的 List<String> 不是List<Object>的子类,但是二者是有联系的 利用有限制的通配符类型处理类似情况 List<? extends Object>(生产者) Collection<? super E>(消费者......

职业搬砖20年 ⋅ 21分钟前 ⋅ 0

ssm框架 +bootstrap分页

这里有两种方式 方式一:自己写分页 方式二:使用插件PageHelper 1.自己写分页 1.1 效果 1.2 实现过程 1.2.1 创建分页公共类 //---------------------------1.属性-------------------------...

Lucky_Me ⋅ 28分钟前 ⋅ 0

Istio

helm template install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml after $ kubectl create namespace istio-system$ kubectl create -f $HOME/ist......

openthings ⋅ 28分钟前 ⋅ 0

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 33分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 34分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 38分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 50分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 56分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部