测试扩展(五)——MVC注解

controller负责处理由DispatcherServlet分发的请求,处理完成后封装成一个Model对象,返回给对应的view进行展示

@Controller只是定义了一个控制器类,而使用@RequestMapping注解的方法才是用来处理请求的。

 

@PathVariable URL路径中的公共变量作为方法中传参

@RequestMapping URL路径和方法映射

  • 支持通配符“* ”
  • 方法参数
    1. HttpServlet 对象-在调用方法的时候会自动给HttpServletRequest 、HttpServletResponse和HttpSession对象赋值【若Session未设置调用httpsession时会报错】
    2. WebRequest 对象-也是自动赋值,可以访问到存放在HttpServletRequest 和HttpSession 中的属性值
    3. InputStream 和Reader 是针对HttpServletRequest 而言的,可以从里面取数据
    4. OutputStream 和Writer 是针对HttpServletResponse 而言的,可以往里面写数据
    5. @PathVariable-处理requet uri 部分
    6. @RequestHeader, @CookieValue-处理request header部分的注解
      • @RequestHeader把Request请求header部分的值绑定到方法的参数上(@RequestHeader("Accept-Encoding") String encoding)
      • @CookieValue把Request header中关于cookie的值绑定到方法的参数上  (@CookieValue("JSESSIONID") String cookie)
    7. @RequestParam,  @RequestBody-处理request body部分的注解
      • @RequestParam常用来处理简单类型的绑定 和 处理Content-Type: 为 application/x-www-form-urlencoded编码的内容【即form表单
      • @RequestBody常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容
    8. @SessionAttributes, @ModelAttribute-处理attribute类型的注解【传递和保存数据
      • @SessionAttributes-用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用
      • @ModelAttribute
        1. 标注在方法上:标注的方法将在controller方法执行之前执行,然后把返回的对象存放在 session[@SessionAttributes] 或模型属性中
        2. 标记在controller方法参数上:该参数的值将从模型或者 Session 中取对应名称的属性值,该名称可以通过 @ModelAttribute(“attributeName”) 来指定
    9. Model 和ModelMap-这些都可以用来封装模型数据,用来给视图做展示
    10. Spring 封装的MultipartFile-用来接收上传文件的
    11. Spring 封装的Errors 和BindingResult 对象-这两个对象参数必须紧接在需要验证的实体对象参数之后,它里面包含了实体对象的验证结果
  • 返回类型
    1. ModelAndView 对象:包含模型和视图
    2. 模型对象:Spring 封装好的Model 和ModelMap ,以及java.util.Map
    3. View 对象:
    4. String 字符串:这往往代表的是一个视图名称
    5. void:一般是直接把返回结果写到HttpServletResponse 中了

@ResponseBody Controller方法的任何返回类型都会通过HttpMessageConverters 转换之后写到HttpServletResponse 中,返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)

 

 

 

 

@Autowired//默认按type注入

  • 注解在字段上,就不需要setter方法了
  • 如果spring容器中相同的类型有两个、或者没有该类型,通过使用@Qualifier

@Qualifier("cusInfoService")//一般作为@Autowired()的修饰用

  • 增加@AutoWired的细粒度
  • 限定标识符可为:字段、方法、参数
  • @Autowired @Qualifie("userService") 两个结合起来可以根据名字和类型注入

@Resource(name="cusInfoService")//默认按name注入,可以通过name和type属性进行选择性注入

@PostConstruct

  • 用来修饰一个非静态的void()方法[不能有抛出异常声明]
  • 在服务器加载Servlet的时候运行,并且只会被服务器调用一次
  • @PostConstruct注解的方法将会在依赖注入完成后被自动调用

@PreDestroy

  • 相当于destory-method,使用在方法上,当Bean销毁时执行

 

https://blog.csdn.net/qq_36567005/article/details/80611139

https://blog.csdn.net/weixin_40423597/article/details/80643990

https://www.cnblogs.com/leskang/p/5445698.html

https://www.cnblogs.com/xiaoxi/p/5718894.html

posted @ 2019-02-12 16:26  june13  阅读(140)  评论(0)    收藏  举报