1.@Controller注解 在spring MVC中使用org.springframework.stereotype.Controller;注解来声明某个类的实例 是一个控制器。如:
@Controller
public class HelloController {
@RequestMapping(method = RequestMethod.GET,value = "/helloworld")
public String hello(){
return "hello";
}
}
在spring MVC中使用扫描机制找到对应的注解的控制器类,为了让控制类被spring MVC扫描到,需要在配置文件中使用spring-context并且使用 <context:component-scan/>元素指定控制器类的包。
<!-- 使用扫描机制扫描控制器类,控制器类都在controller包及其子包下 -->
<context:component-scan base-package="com" />
2.@RequestMapping注解
使用org.springframework.web.bind.annotation.RequestMapping注解类型将请求与处理方法一一对应.
1)类级别注解 在类级别注解下,控制器会将类中的所有方法都映射为类级别的请求。在开发时,为了方便维护程序,建议使用类级别注解,将相同业务逻辑处理放在同一个控制器中。比如:把所有用户业务逻辑的动作都映射在/users下。
2)方法级别注解 作用是放在方法上的,注解的value属性将请求的URL映射到方法,value属性是RequestMapping注解的默认属性,若请求只用value一个属性,可以省略。
3)method属性 method定义了请求的方式,此属性可以定义多个值。
实例: 编写UsersController实现处理用户的登录,注册、注销三个请求动作。
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("users")
public class UsersController {
//用户登录,只接受GET请求
@RequestMapping(value="login",method ={RequestMethod.GET})
//或者简写为
//@GetMapping("login")
public String login(){
System.out.println("执行用户登录...");
//返回/WEB-INF/jsp/login.jsp
return "login";
}
//用户注销,接受GET和POST请求
@RequestMapping(value="logout",method ={RequestMethod.GET,RequestMethod.POST})
public String logout(){
System.out.println("执行用户注销...");
//返回/WEB-INF/jsp/logout.jsp
return "logout";
}
//用户注册,只接受POST请求
@RequestMapping(value="reg",method = RequestMethod.POST)
//或者简写为
//@PostMapping("reg")
public String reg(){
System.out.println("执行用户注册...");
//返回/WEB-INF/jsp/reg.jsp
return "reg";
}
}
使用PostMan测试UsersController的三个接口。

输出结果:
执行用户登录...
输出结果:
执行用户注销...
输出结果:
[WARNING] Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
输出结果:
执行用户注册...