GitHub

SpringMVC常见注解

@PathVariable Integer userId

  将URL中占位符参数绑定到控制器处理方法的入参中

//假设访问的路径是 localhost:8080/kuro-p/blog?number=23

@RequestMapping(value="/kuro-p/blog")
public String blog(@PathVariable Integer number){
return "blog/blog_" + number;
}

  

@RequestParam( value="name", required=false ) String wrap 

   参数绑定:require=false 表示前端对 name 这个参数值可传可不传。不传就赋值null给wrap,若传,则将name对值赋值给wrap

        require=true 表示前端这个 name 的参数必须传递,否则会报错(默认require=true)

       此注释使用方法:

public void sayHi( @RequestParam(value="name", required=true) String wrap ){

      System.out.println(wrap);

}

 

@RequestMapping( value="/Home/index", method=RequestMethod.GET )

  public void sayHi( ){

    System.out.println("Hello there");

  }

  执行函数:访问 localhost:xxxx/Home/index时,就会调用sayHi方法

     method没有默认值,即以任何形式请求(GET/POST/PUT/DELETE)都可以访问的到

 

@Auth //登录权限限制

  a. 如果方法没有使用该注解,会认为没有作权限控制,任何人可以访问

  b. 如果方法使用了该注释,用户在没登录的状态下访问,会返回一个403(权限不足)

  c. 如果方法标注了具体需要某种权限,如@Auth("authority"),则要求访问的用户必须有这种权限,否则返回403(权限不足)

 

@RequestBody 

  将HTTP请求正文转换为合适的HttpMessageConverter对象

 

@ResponseBody

  将内容或者对象作为HTTP响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象写入输入流。

  用了此注解的话,多数表明这是个Ajax接口。

  若Ajax接口没有加 @ResponseBody ,则报404错误。

    使用场景:一般在异步获取数据(Ajax)时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据查看详细

 

@Component( 'abc' ) //声明组件

  声明后的组件,在其他地方调用只需要@Resource( name="abc")。当然,相关头文件也是要引入的。

 

@Resource( name="abc" )

  private ABC abc ; //ABC为abc的类名,若引进的资源名与声明的变量名相同,则可以去掉小括号及其里边的内容

  引入声明后的组件,使用时 abc.方法名() 即可

 

@RequestMapping( value="/produces", produces="application/json")

  produces表示该处理方法将产生json格式的数据,此时根据请求头的Accept进行匹配

 

@Produces

  用于定义方法的响应实体的数据类型

 

@Active( value="XXX,xxx" )

  数据绑定(将其他数据绑定过来,绑定所需要的前端样式)控制页面高亮

 

@Test 

  测试用例

 

JDK自带注解:

  @Override  继承接口,将接口中的方法重写(不写也可以),写上有以下好处:
  编译器验证@Override下面的方法名是否是父类中所有的,如果不是则报错。例如,如果没写@Override,而子类中的方法名写错了,这时编译器是可以编译通过的,因为编译器会认为这个方法是子类中增加的方法。


  @Override
  public void onCreate(Bundle savedInstanceState)

  {…….}
  这种写法是正确的,如果写成:

  @Override
  private void oncreate(Bundle savedInstanceState)
  {…….}

  则编译器会报错

  ( Override的方法类型不能是private的,是public的,private是子类自己的方法,不能算是从父类上继承来的 )  

 

  @Deprecated  已过时的,不建议使用的方法(防止方法删除后,其他类的引用报错)

  @SuppressWarnings  一定要用过时的方法,忽略过时@SuppressWarnings("deprecation")

posted @ 2018-02-06 18:18  長风  阅读(168)  评论(0编辑  收藏  举报