zoukankan      html  css  js  c++  java
  • SpringMVC中请求参数的处理

    1. 简单类型请求参数(一个一个参数接收)

    1.1

    通过@RequestParam注解,可以对请求的参数进行重命名设置;如果不设置@RequestParam,则传递的参数名称默认等于Controller中的参数名称。

    1.2. RESTfull风格:

     1.3. 针对Post请求,处理中文乱码问题,在web.xml配置文件中添加过滤器

    2.复杂类型请求参数(数组和集合)

    2.1 如果Controller方法的接收参数为集合(List),不能直接接收;但是Controller方法可以接收一个对象,我可以把集合封装到对象中。

    浏览器请求参数为集合:

    Controller接收参数方式:

    其中,FormBean对象中封装了一个ids的集合,并创建了一个get和set方法;

    2.2 请求参数为数组,则Controller接收参数时,参数可以直接定义为一个数组。

    2.3 Controller中的方法参数可以声明为一个实体类

    url请求:

     Controller中接收参数:

    声明一个User对象

    参数传递接收总结:

    2,4. ModelAttribute注解

    解释:第一种用法,就是说如果我的形参是一个符合类型(也就是说是个实体类),则我可以添加ModelAttribute注解,给这个参数重命名,前台使用这个参数的时候,可以直接用这个重命名的名字。

    第二种用法,如果一个没有标记@RequestBody的方法,方法上添加ModelAttitute的话,说明我在执行这个Controller任何一个有@RequestBody的方法之前,都要先执行我这个有ModelAttribute的方法

    比如

    这个abc方法,比如我调用/test1方法,则先调用abc方法,这里干什么用呢?一般配合abc方法的参数Model model,用于共享这个model

    2.5.  处理其它请求信息

    解释:@RequestHeader注解用于获取请求头中的值,User-Agent是请求中key值;@CookieValue是用于获得session的值

    @SessionAttributes注解:看test2请求,我model中定义了变量errorMsg,前台abc.jsp页面通过${errorMsg}取值时,是不能取到的,因为这个是重定向到abc.jsp页面,重定向不能实现数据的共享;用flash也不可以,因为flash只能是重定向到Controller才能实现数据共享;那如何让我的abc.jsp页面中取到我的errorMsg值呢,我可以在Controller类中添加@SessionAttributes("errorMsg")注解,将我的errorMsg注解放到session,我的abc.jsp页面就可以取到值了

  • 相关阅读:
    性能分析之路-------各指标代表意思以及分析
    selenium python 定位一组对象
    python 操作word文档
    nmon的安装以及使用
    nginx的监控配置
    selenium 一个简单的流程
    Fiddler手机抓包设置
    urllib、urllib2、urllib3区别和使用
    mysql数据库改名的方法
    Python之pymysql
  • 原文地址:https://www.cnblogs.com/panbin/p/11355065.html
Copyright © 2011-2022 走看看