文档章节

SpringMVC(四):@RequestMapping -->@PathVariable注解

LevelCoder
 LevelCoder
发布于 2017/06/01 23:08
字数 517
阅读 10
收藏 0

@PathVariable

先来看下@PathVariable源码,解释为针对URI模板变量进行绑定

/*
 * Copyright 2002-2014 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;

/**
 * Annotation which indicates that a method parameter should be bound to a URI template
 * variable. Supported for {@link RequestMapping} annotated handler methods in Servlet
 * environments.
 *
 * <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;}
 * then the map is populated with all path variable names and values.
 *
 * @author Arjen Poutsma
 * @since 3.0
 * @see RequestMapping
 * @see org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
 * @see org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
 */
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {

	/**
	 * The URI template variable to bind to.
	 */
	String value() default "";

}

 

@PathVariable常用占位符参数请求模式,同时支持简单正则表达式模式,下面我们来看案例

控制层

package com.levelcoder.controller;

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

/**
 * 
 * 描述:@RequestMapping @PathVariable 注解
 *
 * 作者:LevelCoder
 *
 * 邮箱:LevelCoder@126.com
 *
 * 日期:2017年6月1日 下午9:08:32
 *
 * 版本:V1.0.0
 */
@Controller
public class RMPathVariableController {
	
	
	/**
	 * 占位符匹配
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/rm/pathVariablePlaceholder/{id}")
	public String pathVariablePlaceholder(@PathVariable("id") Integer id){
		System.out.println("id=" + id);
		return "successPathVariable";
	}
	
	
	/**
	 * 正则表达式匹配
	 * @return
	 */
	@RequestMapping(value="/rm/pathVariableRegexp/{regexp:[a-z-]}")
	public String pathVariableRegexp(@PathVariable("regexp") String regexp){
		System.out.println("正则表达式注解模式参数= : " + regexp);  
        return "successPathVariableRegexp";  
	}
	
}

 

测试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>@PathVariable注解</p>
	<a href="rm/pathVariablePlaceholder/1">占位符模式</a>
	<a href="rm/pathVariableRegexp/1">正则表达式模式</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 : RequestMapping PathVariable</title>
</head>
<body>
	恭喜LevelCoder:RequestMapping @PathVariable 程序跑通了,继续学习吧
</body>
</html>

 

测试结果

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

© 著作权归作者所有

共有 人打赏支持
LevelCoder
粉丝 8
博文 93
码字总数 36817
作品 0
房山
高级程序员
私信 提问
Spring框架自学(四)注解注入

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

大二架构师
05/09
0
0
Spring MVC 解读——@RequestMapping (2)

Spring MVC 解读——@RequestMapping 上一篇文章中我们了解了Spring如何处理@RequestMapping注解,并将请求映射信息保存到系统中以处理客户端发送来的请求,但是Spring是怎样接受请求,并根据...

麦壳原野
2014/03/30
0
6
学习SpringMVC——如何获取请求参数

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

Java团长
01/13
0
0
SpringMVC常用注解标签详解

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

Java工程师-Distance
05/20
0
0
springMVC--参数绑定常用的注解

简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A、处理requet uri 部分(这里指uri template中variable,不含querySt...

北京_
2014/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Git —— 创建版本库和提交回退版本

二、 创建版本库 版本库又叫做仓库,简单理解就是一个目录,这个目录里面所有的文件都可以被Git管理起来,每个文件的修改、删除,Git都可以跟踪,便于追踪历史与还原。找到一个合适的位置,创...

lwenhao
29分钟前
3
0
guava cache使用介绍

今天在项目中发现大量使用guava cache提供缓存,觉得不错。 jvm堆大小为5G /** * * 占用JVM内存,内部数据结构类似于ConcurrentHashMap。因为JVM堆大小的限制,guava cac...

jack_peng
33分钟前
3
0
崛起于Springboot2.X之投票活动排行榜项目

简介:投票活动,用户只能一天投票一次,然后对参与投票的项目进行实时的排行功能。 架构:redis+mysql+springboot2.0.3+mybatis 不懂可以私信我哦 1、数据库建表 CREATE TABLE `t_dtb_prod...

木九天
42分钟前
2
0
logback源码分析-2、appender解析

源码基于logback 1.1.2 logback.xml文件内容如下 <?xml version="1.0"?><configuration scan="true" scanPeriod="30 seconds"> <property name="fileDir" value="/export/log/ingore......

924411018
48分钟前
2
0
【HAVENT原创】NodeJS 两个模块进行 RSA 加密解密(匹配Java RSA)

业务逻辑需要使用 NodeJS 进行公钥加密传输给 Java 后端进行私钥解密,但是默认 NodeJS 使用的 RSA padding 模式与 Java 的不一致,所以需要配置。 不啰嗦,上代码,分别用 crypto 和 node-r...

HAVENT
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部