springmvc基础知识(22):springmvc处理方法入参和返回值 - 具体用法可参考 -- 重定向和转发以及mvc:view-controller标签的使用 - 具体用法可参考 -- JSR303数据校验

支持的方法参数类型

每个请求处理方法都可以有多个参数, 参数类型可以为以下类型, 可根据需要添加方法声明参数.

  • javax.servlet.ServletRequestjavax.servlet.http.HttpServletRequest

       - 将客户端浏览器发出的请求封装为请求实例

  • javax.servlet.ServletResponsejavax.servlet.http.HttpServletResponse

       - 将服务端的响应封装为响应实例

  • javax.servlet.http.HttpSession
      - 获取一个session实例


  • java.util.Locale
   - 本地化相关,比如可以获取当前电脑使用的字体信息等,很少用。

  • java.io.InputStreamjava.io.Reader

    - 获取输入流, 这两个对象与通过Servlet API拿到的InputSteam和Reader对象是一样的

  • java.io.OutputSteam java.io.Writer

    - 获取输出流, 这两个对象与通过Servlet API拿到的OutputSteam和Writer对象是一样的

  • org.springframework.http.HttpEntity<T>

    - 其提供了对HTTP请求头和请求内容的存取

  • org.springframework.web.servlet.mvc.support.RedirectAttributes

    - 用以指定重定向传递的属性集以及添加flash属性(暂存在服务端的属性,它们会在下次重定向请求的范围中有效)

    - 具体用法可参考 -- 重定向和转发以及mvc:view-controller标签的使用
  • org.springframework.validation.Errors org.springframework.validation.BindingResult

    - 验证结果对象,用于存储前面的命令或表单对象的验证错误信息

    - 在参数列表中, Errors或BindingResult参数必须紧跟在其所绑定的验证对象后面. 这是因为, 在参数列表中允许有多于一个的模型对象, spring会为它们创建不同的BindingResult实例

    - 具体用法可参考 -- JSR303数据校验
  • org.springframework.web.bind.support.SessionStatus

    - 获取session状态,用以标记当前的表单处理已结束

  • org.springframework.web.util.UriComponentsBuilder

    - 构造器对象, 用于构造当前请求URL相关的信息, 比如主机名、端口号、资源类型(scheme)、上下文路径、servlet映射中的相对部分(literal part)等

  • @PathVariable @MatrixVariable
  • java.util.Maporg.springframework.io.Modelorg.springframework.ui.ModelMap

    - 用以增强默认暴露给视图层的模型(model)的功能

  • @RequestParam注解

    - 带有@RequestParam注解的参数, 其存放了Servlet请求中所指定的参数. 参数的值会被转换成方法参数所声明的类型

  • @RequestHeader注解

    - 带有@RequestHeader注解的参数, 其存放了Servlet请求中所指定的HTTP请求头的值. 参数的值会被转换成方法参数所声明的类型

  • @RequestBody注解

    - 带有@RequestBody注解的参数, 提供了对HTTP请求体的存取. 参数的值通过HttpMessageConverter被转换成方法参数所声明的类型

  • @RequestPart注解

    - 带有@RequestPart注解的参数, 提供了对一个"multipart/form-data请求块(request part)内容的存取

命令或表单对象, 它们用于将请求参数直接绑定到bean字段(可能是通过setter方法)


所有方法参数中, 最重要的是org.springframework.ui.Model, 它是一个接口, 功能类似于java.util.Map,用于存储模型数据. springmvc调用处理方法前, 会创建一个隐含的模型对象, 作为模型数据的存储容器. 如果处理方法的方法参数为Model, 那么springmvc会将模型的引用传递给此参数. 那么在方法内部就可以访问模型中的数据, 也可以向模型中添加新的属性数据.

支持的方法返回类型

请求处理方法的返回类型如下:

  • org.springframework.web.servlet.ModelAndView
  • org.springframework.ui.Model
  • java.util.Map<K, V>
  • org.springframework.web.servlet.View
  • java.lang.String
  • HttpEntity<?> 或ResponseEntity<?>
  • java.util.concurrent.Callable
  • org.springframework.web.context.request.async.DeferredResult<?>
  • void

如果控制器处理方法的返回值是ModelAndView类型, 其既包括模型数据, 又包括视图信息, 那么springmvc就可以使用包含的视图对模型数据进行渲染, 而且可以非常方便的访问模型数据. ModelAndview对象常用的添加模型数据和设置视图的方法如下:

// 添加模型数据

addObject(String attributeName, ObjectattributeValue);

// 设置视图

setViewName(String viewName);


猜你喜欢

转载自blog.csdn.net/abc997995674/article/details/80468433
今日推荐