1.1. @RequestMapping映射请求

SpringMVC 采用 @RequestMapping 注解为控制器指定能够处理那些URL 请求

@requestMapping  能够定义在 类 和 方法 上

package com.ibigsea.springmvc.helloworld;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class HelloWorld { /**
* 配置@RequestMapping 拦截 localhost:8080/springmvc/hello 请求
* @return
*/
@RequestMapping("/hello")
public String helloWorld() {
System.out.println("hello world");
return "helloworld";
}
}

package com.ibigsea.springmvc.helloworld;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("/hello")
public class HelloWorld { /**
* 配置@RequestMapping 拦截 localhost:8080/springmvc/hello/world 请求
* @return
*/
@RequestMapping("/world")
public String helloWorld(){
System.out.println("hello world");
return "helloworld";
}
}

@RequestMapping

– 类定义处:提供初步的请求映射信息。

相对于 WEB 应用的根文件夹

– 方法处:提供进一步的细分映射信息。相对于类定义处的 URL。若

类定义处未标注 @RequestMapping。则方法处标记的 URL 相对于

WEB 应用的根文件夹

DispatcherServlet 截获请求后,就通过控制器上

@RequestMapping 提供的映射信息确定请求所相应的处理方法。

@RequestMapping 除了能够使用请求 URL 映射请求外。

还能够使用请求方法、请求參数及请求头映射请求

1.2. @RequestMapping限定请求方法、请求參数、请求头

/**
* 接收GET请求
* @return
*/
@RequestMapping(value="/get",method = RequestMethod.GET)
public String get(){
System.out.println("get");
return "get";
} /**
* 接收POST请求
* @return
*/
@RequestMapping(value="/post",method = RequestMethod.POST)
public String post(){
System.out.println("post");
return "post";
} /**
* 仅仅接收 name 參数
* @return
*/
@RequestMapping(value="/params",params="name")
public String params(String name){
System.out.println("hello "+name);
return "helloworld";
} /**
* 仅仅接收请求头中 Content-Type 为 text/html;charset=UTF-8的请求
* @return
*/
@RequestMapping(value="/headers",headers="Content-Type:text/html;charset=UTF-8")
public String headers(){
System.out.println("headers");
return "helloworld";
}

1.3. @RequestMapping匹配符

– ?:匹配文件名称中的一个字符

– *:匹配文件名称中的随意字符

– **:** 匹配多层路径

实例:

URL : /user/*/create

-- /user/bigsea/create 、 /user/sea/create 等URL

URL : /user/**/create

-- /user/big/sea/create 、 /user/sea/big/create 等URL

URL : /user/create??

-- /user/createaa 、/user/createbb

1.4. @PathVariable 注解

带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义

通过 @PathVariable 能够将 URL 中占位符參数绑定到控制器处理方法的入參中:URL 中的 {xxx} 占位符能够通过@PathVariable("xxx") 绑定到操作方法的入參中。

/**
* localhost:8080/springmvc/hello/pathVariable/bigsea
* localhost:8080/springmvc/hello/pathVariable/sea
* 这些URL 都会 运行此方法 而且将 <b>bigsea</b>、<b>sea</b> 作为參数 传递到name字段
* @param name
* @return
*/
@RequestMapping("/pathVariable/{name}")
public String pathVariable(@PathVariable("name")String name){
System.out.println("hello "+name);
return "helloworld";
}

JSP(这里指定全路径):

<h1>pathVariable</h1>
<a href="${pageContext.request.contextPath}/hello/pathVariable/bigsea" > name is bigsea </a>
<br/>
<a href="${pageContext.request.contextPath}/hello/pathVariable/sea" > name is sea</a>
<br/>

执行结果:

hello bigsea
hello sea

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTY3NDc0NTA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

1.5. @RequestParam 绑定请求參数

在处理方法入參处使用 @RequestParam 能够把请求參数传递给请求方法

– value:參数名

– required:是否必须。

默觉得 true, 表示请求參数中必须包括相应的參数。若不存在。将抛出异常

/**
* 假设 required = true 则表示请求參数相应的 字段 必须存在.假设不存在则会抛出异常<br/>
* @param firstName 能够为null
* @param lastName 不能为null .为null报异常
* @param age age字段表示假设没有 age 參数 则默认值为 0
* @return
*/
@RequestMapping("/requestParam")
public String requestParam(@RequestParam(value="firstName",required=false)String firstName,
@RequestParam( value="lastName" ,required = true) String lastName,
@RequestParam(value="age",required = false ,defaultValue="0")int age) {
System.out.println("hello my name is " + (firstName == null ? "" : firstName)
+ lastName + "," + age +" years old this year");
return "helloworld";
}

Jsp:

<a href="requestParam?firstName=big&lastName=sea" > name is bigsea , age is 0 </a>
<br/>
<a href="requestParam?lastName=sea&age=23" > name is sea , age is 23 </a>
<br/>
<a href="requestParam" > throws exception </a>

执行结果:

hello my name is bigsea,0 years old this year
hello my name is sea,23 years old this year

1.6. @RequestHeader 获取请求头

请求头包括了若干个属性,server可据此获知client的信息。通过 @RequestHeader 就可以将求头中的属性值绑定到处理方法的入參中

	/**
* 获取请求头中的信息
* @RequestHeader 也有 value ,required ,defaultValue 三个參数
* @param userAgent
* @param cookie
* @return
*/
@RequestMapping("/requestHeader")
public String requestHeader(@RequestHeader("User-Agent")String userAgent,@RequestHeader("Cookie")String cookie){
System.out.println("userAgent:["+userAgent+"]");
System.out.println("cookie:["+cookie+"]");
return "helloworld";
}

JSP:

<a href="requestHeader" > requestHeader </a>

执行结果:

userAgent:[Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2383.0 Safari/537.36]
cookie:[JSESSIONID=DA3B15F559349EA2C3F08BE772FCAFD8]

1.7. @CookieValue 获取 cookie值

/**
* 使用@CookieValue 绑定cookie值<br/>
* 注解@CookieValue 也有 value ,required ,defaultValue 三个參数
* @param session
* @return
*/
public String cookieValue(@CookieValue(value = "JSESSIONID", required= false)String session){
System.out.println("JESSIONID:["+session+"]");
return "helloworld";
}

JSP:

<a href="cookieValue" > cookieValue </a>

执行结果

JESSIONID:[A4196EEDFD829B40CC1975F029A61328]

1.8. 源代码分析






watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTY3NDc0NTA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

版权声明:本文博主原创文章。博客地址:http://blog.csdn.net/a67474506?viewmode=contents

SpringMVC 学习笔记(两) @RequestMapping、@PathVariable和其他注意事项的更多相关文章

  1. SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解

    版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/a67474506?viewmode=contents 1.1. @RequestMapping映射请求 Spring ...

  2. SpringMVC:学习笔记(2)——RequestMapping及请求映射

    SpringMVC--RequestMapping及请求映射 @RequestMapping 说明 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请 ...

  3. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  4. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

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

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

  6. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  7. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  8. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  9. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

随机推荐

  1. UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)

    意甲冠军  由于矩阵乘法计算链表达的数量,需要的计算  后的电流等于行的矩阵的矩阵的列数  他们乘足够的人才  非法输出error 输入是严格合法的  即使仅仅有两个相乘也会用括号括起来  并且括号中 ...

  2. NYOJ 47 河问题

    时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描写叙述 在漆黑的夜里,N位旅行者来到了一座狭窄并且没有护栏的桥边.假设不借助手电筒的话,大家是不管怎样也不敢过桥去的.不幸的是 ...

  3. C#获取FTP文件详细备注信息

    private void button1_Click(object sender, RoutedEventArgs e) { Uri uri = new Uri("ftp://192.168 ...

  4. Windows Phone开发(12):认识一下独具个性的磁贴

    原文:Windows Phone开发(12):认识一下独具个性的磁贴 对"磁贴"的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面 ...

  5. 新秀学习51供应链管理的----模拟笔记本PC和51串行通讯1

    说明: MCU系列文章为我们的球队文章的其他成员.发表在原创和非网络.章集中于此 原地址:http://www.eefocus.com/bbs/article_1156_541662.html 转载须 ...

  6. setInterval定时和ajax请求

    fnSetMarkPoint = function (param) { $.ajax({ success: function (returnValue) { window.setInterval(&q ...

  7. Python使用subprocess的Popen要调用系统命令

    当我们须要调用系统的命令的时候,最先考虑的os模块.用os.system()和os.popen()来进行操作.可是这两个命令过于简单.不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出, ...

  8. Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)

    Ubuntu 13.04/12.10安装Oracle 11gR2图文教程 原文标题:How to Install Oracle 11G R2 Enterprise Edition Database U ...

  9. 认识Backbone (一)

    Backbone.js为复杂WEB应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和自定义事件:集合附有可枚举函数的丰富API: 视 ...

  10. 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)

    原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 责任链模式(Chain of R ...