文章目录
SpringMVC常用注解
1. 基础注解
1.1 @Controller
1.1.1 注解分析
/**
* 用于修饰表现层控制器的注解
*/
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
/**
* 用于指定存入IOC容器是Bean的唯一标识
*/
@AliasFor(annotation = Component.class)
String value() default "";
}
1.1.2 示例
/**
* @author 刘淳
*/
@Controller
public class HelloController {
}
1.2 @RequestMapping
1.2.1 注解分析
/**
* 作用:
* 用于建立请求URL和处理请求方法之间的对应关系。
* 注意:
* 属性只要出现2个或以上时,他们的关系是与的关系。表示必须同时满足条件。
* 出现位置:
* 写在类上:
* 请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录。
* 它出现的目的是为了使我们的URL可以按照模块化管理,使我们的URL更加精细:
* 方法上:
* 请求URL的第二级访问目录。
*/
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
/**
* name:给请求URL提供一个名称。
*/
String name() default "";
/**
* value:用于指定请求的URL。它和path属性的作用是一样的。
* 细节:
* 在配置此属性时,写不写/都是可以的。
*/
@AliasFor("path")
String[] value() default {
};
/**
* 它是4.2版本中加入的注解,和value属性是一样的。
* @since 4.2
*/
@AliasFor("value")
String[] path() default {
};
/**
* method:用于指定请求的方式。它支持以下这些类型:
* GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.
* 这些值是通过RequestMethod枚举指定的。
*/
RequestMethod[] method() default {
};
/**
* params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。
* 例如:
* params = {"accountName"},表示请求参数必须有accountName
* params = {"moeny!100"},表示请求参数中money不能是100。
*/
String[] params() default {
};
/**
* headers:用于指定限制请求消息头的条件。
* 例如:
* RequestMapping(value = "/something", headers = "content-type=text/*")
*/
String[] headers() default {
};
/**
* consumes:用于指定可以接收的请求正文类型(MIME类型)
* 例如:
* consumes = "text/plain"
* consumes = {"text/plain", "application/*"}
*/
String[] consumes() default {
};
/**
* produces:用于指定可以生成的响应正文类型。(MIME类型)
* 例如:
* produces = "text/plain"
* produces = {"text/plain", "application/*"}
* produces = MediaType.APPLICATION_JSON_UTF8_VALUE
*/
String[] produces() default {
};
}
1.2.2 示例
/**
* @author 刘淳
*/
@Controller
@RequestMapping("springmvc")
public class RequestMappingController {
/**
* 控制器方法
*/
@RequestMapping(value = "hello",method = RequestMethod.GET,name = "SpringMVC的第一个请求")
public String useRequestMapping(){
return "success";
}
1.2.3 衍生注解
@GetMapping @PostMapping @PutMapping @DeleteMapping
1.3 @RequestParam
1.3.1 注解分析
/**
* 此注解是从请求正文中获取请求参数,给控制器方法形参赋值的。
* 当请求参数的名称和控制器方法形参变量名称一致时,无须使用此注解。
* 同时,当没有获取到请求参数时,此注解还可以给控制器方法形参提供默认值。
* 注意:
* 它只能出现在方法的参数上
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
/**
* 用于指定获取请求参数的名称。它和name属性的作用是一样的,
*/
@AliasFor("name")
String value() default "";
/**
* 它是在4.2版本中加入的。和value属性互为引用。
* @since 4.2
*/
@AliasFor("value")
String name() default "";
/**
* 指定参数是否必须有值。当为true时,参数没有值会报错。
*/
boolean required() default true;
/**
* 在参数没有值时的默认值。
*/
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
1.3.2 示例
/**
* @author 刘淳
*/
@Controller
public class RequestParamController {
/**
* 处理请求的控制器方法
*/
@RequestMapping("useRequestParam")
public String useRequestParam(@RequestParam(value = "username",required =false) String name, Integer age) {
System.out.println("控制器方法执行了" + name +