← 返回首页
SpringMVC教程(五)
发表时间:2020-05-31 13:10:54
@Controller与@RequestMapping

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]

输出结果:

执行用户注册...