springmvc之@Controller、@RequestMapping等注解解说

首先来看下一段代码:

@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就能几乎相同能够用了。

时间: 2024-11-08 19:44:23

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

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

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

SpringMVC 基于注解的Controller @RequestMapping @RequestParam

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.如今你无须让 Controller 继承不论什么接口.无需在 XML 配置文件里定义请求和 Controller 的映射关系.只使用注解就能够让一个 POJO 具有 Controller 的绝大部分功能 -- Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上.Spring MVC 已经全面超越了其他的 MVC 框架.伴

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

现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.comm

SpringMVC中@Controller和@RequestMapping用法

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

SpringMVC自动扫描@Controller注解的bean

若要对@Controller注解标注的bean进行自动扫描,必须将<context:component-scan base-package="包路径.controller"/>放置在dispatcherservlet的配置文件中,若配置在ContextLoaderListener的配置文件applicationContext.xml中则不起作用 <!-- 上下文配置文件 --> <context-param> <param-name>co

详解SpringMVC中Controller的方法中参数的工作原理

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,

SpringMVC学习笔记一:采用注解式搭建简单springMVC环境

搭建的环境使用的是maven项目 项目目录树: 搭建环境使用的jar包,pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.or

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet

SpringMVC拦截器+Spring自定义注解实现权限验证

设计思路 主要针对需要登录后操作的接口进行校验.接入层在对外暴露接口后,网页.APP.第三方等等途径进行访问接口.用户请求首先会被SpringMVC拦截器拦截到,在拦截器里第一步就是需要校验用户的登录身份(由于是分布式系统这里采用的是userId+accessToken方式来校验),登录校验通过之后再进行用户权限校验,此时会自动拦截@AuthValidate注解的method(核心),如果权限校验失败则抛出权限不足异常,否则校验通过之后再执行具体接口并返回结果. 1.自定义注解 1 packag