spring方法几个注解整理
@RequestMapping
可用于类或方法上,作用是处理请求地址的相关映射。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
该注解有六个属性,分别为value, method,consumes,produces,params,headers。
value: 指定请求的实际地址。
method:指定请求的method类型,如:GET、POST等类型。
consumes:指定处理请求的提交内容类型(Content-Type)也就是前台传递的类型,例如application/json, text/html等。
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
@Responsebody
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用。通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
方法返回的内容,不放到模型中,也不会被解释为视图的名称,若返回 “hello”,则直接返回此字符串,而不会转为hello视图解释。
@Requestbody
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: “json”,contentType:“application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
@GetMapping
等同于@RequestMapping(method = “RequestMethod.GET)
@PostMapping
等同于@RequestMapping(method = “RequestMethod.POST)
@PutMapping
等同于@RequestMapping(method = “RequestMethod.PUT)
@DeleteMapping
等同于@RequestMapping(method = “RequestMethod.DELETE)
@RequestParam
@RequestParam也同样支持multipart/form-data请求,但只适用于name-valueString类型的请求域。
该注解有两个属性: value、required;
value用来指定要传入值的id名称,required用来指示参数是否必须绑定。在方法参数里面如是:
public
@ResponseBody
JsonResult getUserByName(
@RequestParam(value = “name”, required = false) String name)
{
}
@RequestPart
@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。一个HTTP文件上传服务示例:
public File uploadPath;
@RequestMapping(value="/upload/TBOXFile",method=RequestMethod.POST)
public String processUploadFile(
@RequestPart("data") MultipartFile data,
@RequestPart("type") String type
) throws IllegalStateException, IOException {
//String filename = new String(data.getOriginalFilename().getBytes("iso-8859-1"), "utf-8");
String filename = data.getOriginalFilename();
if(uploadPath!=null )
{
System.out.println("filename="+filename);
File saveFile = new File(uploadPath.getAbsolutePath(),filename);
data.transferTo(saveFile);
}
else
{
System.out.println("[FileController]uploadPath is null or space!");
}
其他业务代码 ///
return "redirect:/";
}
@RequestVariable
用来获得请求url中的动态参数的。
在SpringMVC后台控制层获取参数的方式主要有两种:一种是request.getParameter(“name”),
另外一种是用注解@RequestParam直接获取
@RestController
方法的返回值被写到http的响应体中,返回的内容,将不放到模型中,也不被解释为视图的名称。
注解本身使用了
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented@Controller
@ResponseBody
@ConditionalOnClass
当类路径中存在某个类时,再决定是否执行自动配置
@ConditionalOnMissingClass
当类路径中不存在某个类时,再决定是否执行自动配置
@SpringBootApplication
简化自动配置、组件扫描的单独注解集,此注解包括以下注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
其他内容:请求头的相应类型
Request header Content-Type:
常用的类型有:
application/x-www-form-urlencoded : 表单默认的提交数据的格式。
multipart/form-data : 当你需要在表单中进行文件上传时,就需要使用该格式;
application/xhtml+xml :XHTML格式;
application/xml : XML数据格式;
application/atom+xml :Atom XML聚合格式;
application/json : JSON数据格式
application/pdf :pdf格式;
application/msword : Word文档格式;
application/octet-stream : 二进制流数据(如常见的文件下载);