@RequestBody:接收json对象的字符串,ajax请求时指定要dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
需要把所有请求参数作为json解析,请求的url不能包含key=value
JSON.stringify(data)的方式就能将对象变成字符串
@RequestMapping:处理请求地址映射的注解
映射URL到控制器类中(或到controller控制器的处理方法上),支持通配符*
Controller加的时候,使用跟这个注解的方法的请求地址是相对于这个类上的@RequestMapping而言的,当controller没有此注解时,方法上的@requestMapping是绝对路径
————————————————————————————————————————————————————————
2、属性:value、params、method、headers
1、params指定参数:@RequestMapping(value = "testParams", params = { "param1=value1", "param2", "!param3" })三个参数,第一个值必须等于value1,第二个必须存在、值不管,第三个必须不存在,这样才能访问该方法
2、method,限制能够访问的方法类型,method = { RequestMethod.GET, RequestMethod.DELETE }
3、headers通过请求头缩小@RequestMapping的映射范围 headers = { "host=localhost", "Accept" }
只有当请求头中包含Accept信息,host为localhost时
方法支持的参数和返回类型:
方法参数:
httpServlet:httpServletRequest、httpServletResponse和HttpSession,spring调用方法时自动赋值,参数中写、直接用;httpSession如果还没有建立起来会用问题
webRequest:该对象可以访问到存放在HttpServletRequest和HttpSession中的属性值
InputStream、outputStream、Reader和Writer
InputStream和Reader是针对HttpServletRequest而言的,可以从里面取数据;OutputStream和Writer是针对HttpServletResponse而言的,可以往里面写数据。
使用@PathVariable、@RequestParam、@CookieValue和@RequestHeader、@ModelAttribute标记的参数
java.util.Map、Spring封装的Model和ModelMap:封装模型数据
实体类
Spring封装的multipartFile接收上传文件
封装的errors和bindingResult:紧接在需要验证的实体对象参数后,包含了实体对象的验证结果
返回类型:
包含模型和视图的modelAndView对象
模型对象:spring封装好的model和modelmap、map,没有视图要返回时视图名由RequestToViewNameTranslator决定
View对象:在渲染视图的过程中可以给方法定义模型参数、方法中添加值
String字符串:代表视图名称,需要在渲染视图过程中需要模型的话在方法中添加值
Void:直接将返回写过写到httpServletResponse中,没有写的话,spring将利用requestToViewNameTranslator返回对应的视图名称
方法被@responseBody标记,返回类型会通过HTTPMessageConvert转换后写到HttpServletResponse中
————————————————————————————————————————————————————————
@PathVariable标记参数,可以是变量{variable1}
@RequestMapping("/test/{variable1}")
public class MyController {
@RequestMapping("/showView/{variable2}")
public ModelAndView showView(@PathVariable String variable1,@PathVariable("variable2") int variable2){}
}
{variable1}在debug模式下默认去uri模板中找参数名相同的变量
{variable2}明确使用URI模板的variable2变量
————————————————————————————————————————————————————
@RequestParam绑定httpservletRequest参数到控制器方法参数
@RequestParam(value = "per_page", required = false,defaultValue = "10")
@CookieValue绑定cookie值到controller方法参数
public String testCookieValue(@CookieValue("hello") String cookieValue,@CookieValue String hello)
————————————————————————————————————————————————————
@requestHeader绑定httpServletRequest头信息到controller方法参数,同上,但是大小写不敏感
(@RequestHeader("Host") String hostAddr,@RequestHeader String Host, @RequestHeader String host)
@ModelAttribute和@SessionAttributes模型、控制器间传递保存数据
@M*标记在方法上,该方法在处理器方法执行前执行,然后将返回对象存放在session或模型属性中,属性名称可以使用@ModelAttribute(“”)标记方法的时候指定,未指定使用返回类型的类名称作为属性名,
标记在类上的@SessionAttributes用于标记需要在Session中使用到的数据,包括从Session中取数据和存数据;Session中第二次使用会
@SessionAttributes(value = { "user1", "blog1" }, types = { User.class,Blog.class })
参数中取:(Writer writer,@ModelAttribute("user1") User user1, @ModelAttribute("blog1") Blog blog1)
————————————————————————————————————————————————————
定制类型转换器:复杂的类型spring无法自动识别、转换,需要定义对特定类型的识别转换器
@InitBinder注册在controller上:局部;方法体中注册转换器,
该controller方法处理时发现有不能解析的对象,在类中寻找加@in*的方法,执行方法、看里面定义的类型转换器是否与当前需要的类型匹配
https://blog.csdn.net/leijie0322/article/details/52162107
@autowired根据类型对成员变量、方法和构造函数进行标注