赞
踩
@Controller和@RestController注解的区别:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
@Controller注解有@Component的功能,控制器类对象是Spring容器管理的。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
@AliasFor(
annotation = Component.class
)
String value() default "";
}


① 请求参数与形参一一对应,适用于简单类型。比如 String、int、double等。适用于参数个数比较少的情况。

② 对象类型,控制器方法参数是对象,请求的多个参数名与属性名相对应。

③ @RequestParam 注解,把请求中的指定名称的参数传递给控制器中的形参赋值。(将查询参数,form 表单数据解析到方法参数,解析 multipart 文件上传)。
// @RequestParam 注解源码
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
@AliasFor("name")
String value() default ""; //请求参数中的名称
@AliasFor("value")
String name() default "";
boolean required() default true; //请求参数中是否必须提供此参数
String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}

④ HttpServletRequest 使用 request 对象就收参数,request.getParameter(“XXX”)获取对应的值,原始的 JavaWeb 中的方式。

⑤ RequestBody注解,接收前端传递的Json格式参数。(接收请求体中的 json 数据)。

⑥ @RequestHeader,从请求 header 中获取某些值。

⑦ 数组参数接收多个值。







Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。