SpringMVC系列(二)

SpringMVC技术细节(一)

一. 关于@RequestMapping注解

  1. 使用方法

    通过该注解可以URL实现路径到处理器方法的映射。它可以用在类或方法上,当用在方法上表示将该方法变为一个处理器,且和指定路径做映射。用在类上则配置的路径会作为这个类中所有处理器的路径的父路径使用。

  2. 属性

    1. String[] value() default{}

    指定要将当前处理器绑定到哪个访问路径上。可以配置多个路径,用逗号分开。路径中也可以使用*号作为通配符匹配部分路径。

    1. RequestMethod[] method() default{}

      指定当前处理器处理哪种提交方式提交的请求,不指定则接收任意请求方式的请求。

    2. String[] params() default{}

      用来限定当前请求中必须包含指定名称的请求参数,如果没有则不会被当前处理器处理。

      • 格式1:只指定名称(键),要求必须具有该名称的请求参数
      • 格式2:以"名称=值"或"名称!=值"的方式指定必须具有某个请求参数,且值必须等于或不等于给定值 格式
      • 3:以"!名称"的方式指定必须不包含指定名称的请求参数
    3. String[] headers() default{}

      用来限定当前请求中必须包含指定名称的请求头才会被当前处理器处理。

      • 格式1:只指定名称(键),要求必须具有该名称的请求头。
      • 格式2:以"名称=值"或"名称!=值"的方式指定必须具有某个请求头,且值必须等于或不等于给定值。
      • 格式3:以"!名称"的方式指定必须不包含指定名称的请求头

 

二. 获取参数请求


  1. 通过request对象获取

    在SpringMVC的注解开发中,可以选择性的接收Request和Response对象来使用,可以用request对象来获取请求参数。

  2. 直接接受请求参数

    可以在Controller方法中直接接收请求参数相同名称的方法形参,可以直接得到请求参数的值

  3. 请求参数中的名称和属性名不同的处理@RequestParam

    可以通过@RequestParam来修饰Controller方法中用来接收请求参数的形参,有如下属性可以配置:

名称 作用
value 参数名字,即传入参的请求参数名字,如value=“delId”表示请求的参数区中的名字为delId的参数的值将传入
required 是否必须,默认是true,表示请求中一定要有相应的参数,否则将报400错误码;
defaultValue 默认值,表示如果请求中没有同名参数时的默认值
  1. 自动封装请求参数信息到bean
    SpringMVC框架可以自动将请求参数封装到bean中,要求bean中必须提供属性的setXxx方法,且bean的属性名和请求参数中请求参数的名字必须一致,才可以自动设置。

  2. 对于复杂类型
    如果自动封装的bean中存在复杂类型,只要该复杂类型的属性同样具有setXxx方法,则可以在请求参数中包含[bean中复杂类型].[属性]的方式为该复杂类型的参数赋值,从而实现自动封装bean的过程中处理其中的复杂类型

  3. 请求参数中存在多个同名参数
    如果请求参数中存在多个同名值,直接获取会得到一个用逗号分隔的字符串,可以修改Controller方法的形参为数组类型,则直接接收到一个数组。

  4. 请求参数中的中文乱码

    SpringMVC提供了过滤器来解决全站乱码,但这种方式只能解决POST提交的乱码,对GET提交的无效。

  5. 日期数据的处理
    在SpringMVC中解析页面提交的请求参数时,无法自动获取封装日期到Data。如果想要实现自动封装,必须手动注册适配器自己来指定转换方

  6. 路径动态数据的获取(RESTFul风格的请求参数处理)
    通过@PathVariable注解可获取RequestMapping中大括号括起来的动态参数。

 

三. SpringMVC中的资源跳转


  1. 请求转发、请求重定向、定时刷新的区别

    1. 转发:
      1. 请求转发是服务器内部的跳转。
      2. 地址栏不发生变化。
      3. 只有一个请求响应。
      4. 可以通过request域传递数据。
    2. 重定向:
      1. 请求重定向是浏览器自动发起对跳转目标的请求。
      2. 地址栏会发生变化。
      3. 两次请求响应。
      4. 无法通过request域传递对象。
    3. 定时刷新:
      1. 定时刷新是浏览器自动发起对跳转目标的请求
      2. 地址栏会发生变化
      3. 两次请求响应无法通过request域传递对象
      4. 可以在资源跳转期间提示额外信息
  2. SpringMVC中的请求转发

    1. 传统方式

      SpringMVC系列(二)_第1张图片
    2. SpringMVC方式实现请求转发

      可以通过返回forward:/xxxx.xxx格式的字符串表明要转发的指定地址。

      SpringMVC系列(二)_第2张图片
  3. SpringMVC中的请求重定向

    1. 传统方式

      SpringMVC系列(二)_第3张图片
    2. SpringMVC方式实现请求重定向
      可以通过返回redirect:/xxxx.xxx格式的字符串表明要重定向到指定地址。通过这种方式实现请求重定向时不用在路径前写应用名,SpringMVC会自动拼接应用名。

      SpringMVC系列(二)_第4张图片
    3. SpringMVC中的定时刷新

      SpringMVC中没有提供实现定时刷新的便捷方式,只能用传统方式实现定时刷新。

      SpringMVC系列(二)_第5张图片

你可能感兴趣的:(SpringMVC系列(二))