springMVC注解总结

Springmvc注解总结

  1. @controller

该注解注在类上,目的是为被扫描成组件放入容器内

@Controller

public class AdminController {


}
  1. @Restcontroller(controller+responseBody)

简化开发:直接把@controller换成@restcontroller

如果hellocontroller下面所有的handler都是为了响应ajax请求,我们没必要再每一个handler里面加@responseBody

@RestController

public class HelloController {

     

    @RequestMapping("/index")

    public String index2(){

         

        return "zhuximing";

    }

     
    @RequestMapping("/index1")

    public String index3(){

         

        return "zhuximing";

    }

    
     

    @RequestMapping("/index3")

    public String index4(){

         

        return "zhuximing";

    }

    

}
  1. @restcontroller的源码
@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Controller

@ResponseBody

public @interface RestController {



    /**

     * The value may indicate a suggestion for a logical component name,

     * to be turned into a Spring bean in case of an autodetected component.

     * @return the suggested component name, if any

     * @since 4.0.1

     */

    String value() default "";



}

 

  1. @requestMapping

该注解可以注在类上,也可以注在方法上,

注在类上表示根路径,如下代码,访问地址/admin/index

@Controller

@RequestMapping("/admin")

public class AdminController {

    @RequestMapping("/index")

    public String index(){

     

        return "index";

    }

}

 

注在方法上,如下代码,访问地址是/index

@Controller

public class AdminController {

    @RequestMapping("/index")

    public String index(){

     

        return "index";

    }

}

 

注解属性:

  1. Value类型:string【】

//指定请求路径,当然一个Handler可以多个请求路径如:

@RequestMapping(value={"/a","/b"})

    public String aa(){

        return "index";

  }
  1. Method类型:RequestMethod【】

//指定请求方式,默认情况是:method={RequestMethod.post,requestMethod.GET}

//既可以接收get,也可以接收post

  1. Params类型:string[ ]

//指定请求参数

@RequestMapping(value=”testParms”,params={“param1=value1”,”param2”,”!param3”})

       Public String testParams(){

              System.out.printIn(”test params………”);

              Return “testParams”;

}
  1. RequestParam

该注解加在形参上,在进行简单参数绑定的时候,如果前端传来的数据名,和接收数据的形参名一致,可以不用这个注解,但是如果不一致,就必须使用该注解

注解属性

  1. Value 类型:String
@RequestMapping()

    //页面传来的是id,但是形参名是itemId,这个时候就需要在value中指定

    public String aa(@RequestParam(value="id") Integer itemId){

        return "index";

 }

 

  1. defaultValue类型:String
@RequestMapping()

    //defaultValue表示默认值,当页面前端不传id值,那么值为0

    public String index(@RequestParam(value="id",defaultValue="0") Integer itemId){

        return "index";

    }

 

  1. required类型:Boolean默认值true
@RequestMapping()

    //required表示必须传值,如果不传值不让访问

    public String index(@RequestParam(value="id",required=true) Integer itemId){

        return "index";

  }

 

  1. RequestBody和@ResponseBody

这两个注解是为ajax请求量身定做的。

@RequestBody: 注在形参前面  json数据转换成pojo对象

@ResponseBody:注在方法上, pojo转换成json

@RequestMapping("/jsontest")

    @ResponseBody

    public Items jsonTest(@RequestBody Items items) {

        return items;

}
  function sendJson() {<script type="text/javascript">

        $.ajax({

            type:"post",

            url:"${pageContext.request.contextPath }/item/jsontest.action",

            data:'{"id":1,"name":"电冰箱","price":1999.0}',

            contentType:"application/json;charset=utf-8",

            success:function(data){

                alert(data.id +":" +data.name);

            }

        });

    }

</script>


 

 

 

  1. @PathVariable

该注解是springMVC对restful风格的一种实现

@PathVariable:加在形参前面,获取路径参数,注意:即使/item/{id}和形参名一致也不能省略。

@RequestMapping("/itemEdit/{id}")

    //如果id和方法的形参一致@PathVariable中可以不写内容

    public String editItem(@PathVariable("id") Integer iddd, Model model) {

        Items items = itemService.getItemById(iid);

        //把数据传递给页面

        model.addAttribute("item", items);

        //返回逻辑视图

        return "editItem";

}

 

猜你喜欢

转载自blog.csdn.net/It_You_Know/article/details/81538807
今日推荐