SpringMvc之@controller与@RequestMapping注解

传统风格的控制器不仅需要在配置文件中部署映射,而且只能编写一个处理方法,不够灵活。

使用基于注解的控制器具有以下 2 个优点:

  1. 在基于注解的控制器类中可以编写多个处理方法,进而可以处理多个请求(动作),这就允许将相关的操作编写在同一个控制器类中,从而减少控制器类的数量,方便以后维护。
  2. 基于注解的控制器不需要在配置文件中部署映射,仅需要使用 @RequestMapping 注解一个方法进行请求处理即可。

 Spring MVC 中最重要的两个注解类型:@Controller 和 @RequestMapping 

Controller注解 

@Controller 注解用于声明某类的实例是一个控制器。例如,在 com.cmj,controller 包中创建控制器类 HelloController.java

package com.cmj.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

	@RequestMapping("/")
	public String index() {
		return "index";

	}
	@RequestMapping("/hello")
	public String hello() {
		return "hello";

	}
}

在这段代码中,我们需要在这个HelloController类的上方用@controller进行修饰,才可以把这个设置为系统所可以看到的控制类

Spring MVC 使用扫描机制找到应用中所有基于注解的控制器类,所以,为了让控制器类被 Spring MVC 框架扫描到,需要在配置文件中声明 spring-context,并使用  元素指定控制器类的基本包(请确保所有控制器类都在基本包及其子包下)。 

SpringMvc之@controller与@RequestMapping注解_第1张图片

例如,在 SpringMvc3应用的配置文件Myservlet.xml 中添加以下代码: 

 

        

        
        
            
            
        

 其中的 根据你实际的情况填写,例如你是。jsp格式或是xml格式都可以进行配置

RequestMapping注解

一个控制器内有多个处理请求的方法,如 UserController 里通常有增加用户、修改用户信息、删除指定用户、根据条件获取用户列表等。每个方法负责不同的请求操作,而 @RequestMapping 就负责将请求映射到对应的控制器方法上。

在基于注解的控制器类中可以为每个请求编写对应的处理方法。使用 @RequestMapping 注解将请求与处理方法一 一对应即可。

@RequestMapping 注解可用于类或方法上。

        用于类上,表示类中的所有响应请求的方法都以该地址作为父路径。 就是一个大的入口,下面还可以有其他子类:例如父类为student。那在他下面的话,是添加学生、修改学生、删除学生等;有一个统一的父类,就不用多次去配置

        作用于方法上,就直接到达该方法;网址映射为项目名后跟着对应的该方法

1. value 属性

value 属性是 @RequestMapping 注解的默认属性,因此如果只有 value 属性时,可以省略该属性名,如果有其它属性,则必须写上 value 属性名称。如下。

@RequestMapping(value="toUser")
@RequestMapping("toUser")
@RequestMapping(value="toUser",“getUser”)

 通过在 @RequestMapping 注解下,在value中的属性,表示在URL中对应的名字,都会走到该方法中

例如:

@RequestMapping(value = {"/hello","/add"})
	public String hello() {
		return "hello";

	}

这边通过value可以看成是一个数组,后续可以通过以下都可以调用该方法:

127.0.0.1:8080/项目名/hello与 127.0.0.1:8080/项目名/add都会走到该方法中来

4. method属性

method 属性用于表示该方法支持哪些 HTTP 请求。如果省略 method 属性,则说明该方法支持全部的 HTTP 请求。

@RequestMapping(value = "toUser",method = RequestMethod.GET) 表示该方法只支持 GET 请求。也可指定多个 HTTP 请求,如 @RequestMapping(value = "toUser",method = {RequestMethod.GET,RequestMethod.POST}),说明该方法同时支持 GET 和 POST 请求。 

后续可以直接 @RequestMapping改为对应的@getMapping或者是@DeleteMapping,就是增删改查,就可以直接是调用这种get或者是delete请求

	@GetMapping
	public String add() {
		return "student";
		
	}

 

你可能感兴趣的:(SpringMvc,spring,mvc,java)