springMVC注解总结
程序员文章站
2022-07-15 11:42:49
...
Springmvc注解总结
- @controller
该注解注在类上,目的是为被扫描成组件放入容器内
@Controller
public class AdminController {
}
- @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";
}
}
- @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 "";
}
- @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";
}
}
注解属性:
- Value类型:string【】
//指定请求路径,当然一个Handler可以多个请求路径如:
@RequestMapping(value={"/a","/b"})
public String aa(){
return "index";
}
- Method类型:RequestMethod【】
//指定请求方式,默认情况是:method={RequestMethod.post,requestMethod.GET}
//既可以接收get,也可以接收post
- Params类型:string[ ]
//指定请求参数
@RequestMapping(value=”testParms”,params={“param1=value1”,”param2”,”!param3”})
Public String testParams(){
System.out.printIn(”test params………”);
Return “testParams”;
}
- RequestParam
该注解加在形参上,在进行简单参数绑定的时候,如果前端传来的数据名,和接收数据的形参名一致,可以不用这个注解,但是如果不一致,就必须使用该注解
注解属性
- Value 类型:String
@RequestMapping()
//页面传来的是id,但是形参名是itemId,这个时候就需要在value中指定
public String aa(@RequestParam(value="id") Integer itemId){
return "index";
}
- defaultValue类型:String
@RequestMapping()
//defaultValue表示默认值,当页面前端不传id值,那么值为0
public String index(@RequestParam(value="id",defaultValue="0") Integer itemId){
return "index";
}
- required类型:Boolean默认值true
@RequestMapping()
//required表示必须传值,如果不传值不让访问
public String index(@RequestParam(value="id",required=true) Integer itemId){
return "index";
}
- 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>
- @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";
}
上一篇: 【附】SpringMVC 注解总结
下一篇: SpringMVC上传图片并预览