【spring注解】部分

@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、属性:valueparamsmethodheaders

      1params指定参数:@RequestMapping(value = "testParams", params = { "param1=value1", "param2", "!param3" })三个参数,第一个值必须等于value1,第二个必须存在、值不管,第三个必须不存在,这样才能访问该方法

        2method,限制能够访问的方法类型,method = { RequestMethod.GET, RequestMethod.DELETE }

        3headers通过请求头缩小@RequestMapping的映射范围 headers = { "host=localhost", "Accept" }

扫描二维码关注公众号,回复: 1216332 查看本文章

        只有当请求头中包含Accept信息,hostlocalhost

   方法支持的参数和返回类型:

     方法参数:

                    httpServlethttpServletRequesthttpServletResponseHttpSessionspring调用方法时自动赋值,参数中写、直接用;httpSession如果还没有建立起来会用问题

                    webRequest:该对象可以访问到存放在HttpServletRequestHttpSession中的属性值

                    InputStreamoutputStreamReaderWriter

                            InputStreamReader是针对HttpServletRequest而言的,可以从里面取数据;OutputStreamWriter是针对HttpServletResponse而言的,可以往里面写数据。

     使用@PathVariable@RequestParam@CookieValue@RequestHeader@ModelAttribute标记的参数

                     java.util.MapSpring封装的ModelModelMap:封装模型数据

    实体类

              Spring封装的multipartFile接收上传文件

    封装的errorsbindingResult:紧接在需要验证的实体对象参数后,包含了实体对象的验证结果

  返回类型:

    包含模型和视图的modelAndView对象

    模型对象:spring封装好的modelmodelmapmap,没有视图要返回时视图名由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根据类型对成员变量、方法和构造函数进行标注

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/80273272