首先来看下一段代码:

@Controller
@RequestMapping("/user")
public class UsersController {
@RequestMapping(value="/findAll")
private String findAll(){
return "index";
}
}

以下对上面几个注解进行简单的说下使用方法:

@Controller

@Controller:表明这个类是一个控制器类。假设用这个注解。须要在spring-mvc配置文件加上这一段。<context:component-scan base-package="com.ztz.springmvc.controller"/>



@RequestMapping



@RequestMapping:能够为控制器指定处理能够请求哪些URL请求,@RequestMapping能够定义在类或方法上。

  • 类上:提供初步的请求映射信息。相对于 WEB 应用的根文件夹
  • 方法上:提供进一步的细分映射信息。

    相对于类定义处的 URL。

    若类定义处未标注 @RequestMapping。则方法处标记的 URL 相对于WEB 应用的根文件夹

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

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

@RequestMapping 除了能够使用请求 URL 映射请求外,还能够使用请求方法、请求參数及请求头映射请求。

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



@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.GET)
private String findAll(){
System.out.println("仅仅接受get请求");
return "index";
}
}
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.POST)
private String findAll(){
System.out.println("仅仅接受post请求");
return "index";
}
}
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",params="name")
private String findAll(){
System.out.println("仅仅接受name參数");
return "index";
}
}

假设一个请求URL,没有携带name參数,那么该方法就拒绝呗訪问。

@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",headers="Content-Type:text/html;charset=UTF-8")
private String findAll(){
System.out.println("仅仅接受请求头中Content-Type为text/html;charset=UTF-8的请求");
return "index";
}
}


@RequestParam 绑定请求參数

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

  • value:參数名
  • required: 是否必须。 默觉得 true, 表示请求參数中必须包括相应的參数, 若不存在,将抛出异常
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@RequestParam(value="name",required=true)String name,//參数name不能为空
@RequestParam(value="sex",required=false)String sex,//參数sex能够为空
@RequestParam(value="age",defaultValue="20")String age){//參数age假设为空,默认值为20
System.out.println(name);
System.out.println(sex);
System.out.println(age);
return "index";
}
}

浏览器请求:http://127.0.0.1:8080/springmvc/user/findAll?name=123

控制台输出:
123

null

20

@RequestHeader 获取请求头

一个Http请求头包括了若干个属性。server可据此获知client的信息,通过@RequestHeader就可以将求头中的属性值绑定到处理方法的入參中。
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@RequestHeader(value="User-Agent")String user_Agent,
@RequestHeader(value="Cookie")String cookie){
System.out.println(user_Agent);
System.out.println(cookie);
return "index";
}
}
浏览器请求:http://127.0.0.1:8080/springmvc/user/findAll
控制台输出:

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36

JSESSIONID=0E665D80D25F097EB9ECA533F07C3355



@CookieValue 获取cookie值

上面我们获得http请求头的cookie。如今我们直接去获得cookie的值。
@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll")
private String findAll(@CookieValue(value="JSESSIONID")String cookie){
System.out.println(cookie);
return "index";
}
}
浏览器请求:http://127.0.0.1:8080/springmvc/user/findAll
控制台输出:

0E665D80D25F097EB9ECA533F07C3355


@RequestBody获取http的body

@Controller
@RequestMapping("/user")
public class UsersController { @RequestMapping(value="/findAll",method=RequestMethod.POST)
private String findAll(@RequestBody(required=true) String body){
System.out.println(body);
return "index";
}
}

这里採用Fiddler測试下。POST请求http://127.0.0.1:8080/springmvc/user/findAll,消息体是:{"name":"test @RequestBody"}

控制台输出:
{"name":"test @RequestBody"}




PS:能掌握上面几个注解,springmvc就能几乎相同能够用了。

springmvc之@Controller、@RequestMapping等注解解说的更多相关文章

  1. SpringMVC的controller方法中注解方式传List参数使用@RequestBody

    在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...

  2. SpringMVC中 Controller的 @ResponseBody注解分析

    需求分析:需要 利用    out 对象返回给财付通是否接收成功 .那么将需要如下代码: /** * 返回处理结果给财付通服务器. * @param msg: Success or fail. * @ ...

  3. SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable

    我的開發環境 框架:        springmvc+spring+freemarker 開發工具: springsource-tool-suite-2.9.0 JDK版本: 1.6.0_29 to ...

  4. SpringMVC中@Controller和@RequestMapping用法和其他常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  5. SpringMVC中@Controller和@RequestMapping用法和其他常用注解(转)

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  6. SpringMVC 基于注解的Controller @RequestMapping @RequestParam..

    概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...

  7. spring mvc 注解@Controller @RequestMapping @Resource的详细例子

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  8. spring mvc:内部资源视图解析器2(注解实现)@Controller/@RequestMapping

    spring mvc:内部资源视图解析器2(注解实现)  @Controller/@RequestMapping 访问地址: http://localhost:8080/guga2/hello/goo ...

  9. spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping

    spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping 项目访问地址: http://localhost:8080/guga2/hello/prin ...

随机推荐

  1. (三)Appium-desktop 打包

    appium-desktop经过二次开发后,需要打包为应用提供给其它同学使用.我们知道appium-desktop是使用electron来构建跨平台桌面应用程序.electron有electron-p ...

  2. Android 侦听应用(Package)变化的方法侦听广播

    应用的状态变化,包括安装.卸载.更新,是android系统上重要的事件.如何侦听到?有两种方法,一是通过侦听广播,一是实现PackageMonitor. 侦听广播   当Package状态发生变化时, ...

  3. Android java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader......couldn't find "libweibosdkcore.so

    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ ...

  4. 【Oracle】解决oracle sqlplus 中上下左右backspace不能用

    一. 解决输入 BACKSPACE 键变成 ^h 的问题 #su - oracle   $stty erase ^h. 要永久生效,可以加入到用户环境配置文件.bash_profile中(vi .ba ...

  5. java反射_01

    为什么要用反射? 举个栗子: package com.imooc.reflect; public class Work { // 定义一个word方法 public void word() { Sys ...

  6. SLAM:使用G2O-ORB-SLAM(编译)

    前言: 没有新雪,看看自己所做的事情,有没有前人做过.果然,EKF_SLAM的版本出现了Android版本的OpenEKFMonoSLAM, G2O-ORB SLAM也出现了VS2012版本. 一.S ...

  7. Cache-Control 机制是为浏览器定制的?

    Cache-Control 机制是为浏览器定制的?

  8. CorelDRAW图片导出变色,如何解决?

    很多小伙伴反映说CDR颜色导出不准确,特别是CorelDRAW X4以及之前的版本,那么CDR导出变色的问题是怎么导致的,如何解决呢,本文小编分享一些自己的心得. 一:出现问题. 比如下面这个问题,明 ...

  9. STM32F103 rtthread工程构建

    目录 STM32F103 工程构建 1.基本情况 2.硬件连接 3.rtthread配置 4.点灯 5. 码云上git操作 STM32F103 工程构建 1.基本情况 RAM 20K ROM 64K ...

  10. swift-自动计算字符串的宽高

    写一个方法来继承String //自动控制文字换行及宽度 extension String { func textSizeWithFont(font: UIFont, constrainedToSiz ...