• 10.SpringMVC注解式开发-处理器方法的参数


    1.逐个参数接收

      只要保证请求参数名与该请求处理方法的参数名相同即可

    1 // 请求参数名 与该处理器中的请求方法的参数名相同 ,即可接收前台传递过来的参数
    2     public ModelAndView method1(String username, int age) {

    2.请求参数中文乱码问题

     1 <!-- 使用 Spring 中的 过滤器 ,解决编码问题 (只对Post 请求生效)-->
     2   <filter >
     3       <filter-name>characterEncodingFilter</filter-name>
     4       <filter-class>
     5           org.springframework.web.filter.CharacterEncodingFilter
     6       </filter-class>
     7       <!-- 指定字符集 -->
     8       <init-param>
     9           <param-name>encoding</param-name>
    10           <param-value>utf-8</param-value>              
    11       </init-param>
    12       <!-- 是否 强制使用 上述的字符集,如果不使用这个,如果在代码中 指定了 字符集,那么 就不会 去使用 上面指定的了  -->
    13       <init-param>
    14           <param-name>forceEncoding</param-name>
    15           <param-value>true</param-value>
    16       </init-param>
    17   </filter>

    3.校正请求参数名@RequestParam

      所谓校正请求参数名,是指若请求URL所携带的参数名与处理方法中指定的参数名不相同时,

      则需在处理方法参数前,添加一个注解 @RequestParam("请求参数名"),指定请求URL所携带参数的名称

      该注解是对处理方法参数进行修饰的

      @RequestParam() 有三个属性

      value:指定请求参数的名称 

      required:指定该注解所修饰的参数是否是必须的

      defaultValue:指定当前参数的默认值

    1 // 校正请求参数名 (前台传来的 参数名 和 这里 方法中的参数名 无法匹配,可以使用 这个注解 来映射一下 )
    2     @RequestMapping(value = "/requestParams.do")
    3     public ModelAndView method2(@RequestParam("username") String name, int age) {

      

    4.整体参数接收

      将处理器方法的参数定义为一个对象,只要保证请求参数名与这个对象的属性一致即可

      参数名称中不用写成  对象.属性 的 形式(前台给的参数也不用写成 对象.属性)

    
    
    1 username :<input name="username" type="text"/><br/>
    2         age : <input name="age" type="text"/><br/>
     1 @RequestMapping(value = "/objectParams.do")
     2     public ModelAndView method3(Person person) {
     3 
     4         System.out.println(person);
     5         ModelAndView mv = new ModelAndView();
     6         mv.addObject("username", person.getUsername());
     7         mv.addObject("age",person.getAge());
     8         mv.setViewName("/WEB-INF/jsp/hello.jsp");
     9         return mv;
    10     }

    5.域属性参数的接收

      所谓域属性,即对象属性。(该对象的某属性还是一个对象)

      当请求参数中的数据为某类对象域属性的属性值,要求请求参数名为 "域属性名.属性"

      

    
    
    1 username :<input name="person.username" type="text"/><br/>
    2         age : <input name="person.age" type="text"/><br/>

    1
    //域属性(某个属性 是 对象类型)参数的接收 2 @RequestMapping(value = "/objectPropertyParams.do") 3 public ModelAndView method4(Earth earth) { 4 5 System.out.println(earth); 6 ModelAndView mv = new ModelAndView(); 7 mv.addObject("username", earth.getPerson().getUsername()); 8 mv.addObject("age",earth.getPerson().getAge()); 9 mv.setViewName("/WEB-INF/jsp/hello.jsp"); 10 return mv; 11 }

    6.路径变量@PathVariable

      对于处理器方法中所接受的请求参数,可以来自请求中所携带的参数,也可以来自于请求的URI中所携带的变量,

      此时,需要借助@PathVariable 注解

    1 // 路径变量 (参数 藏在 路径中传递过来)(了解就好)
    2     @RequestMapping(value = "/{pname}/{age}/pathVariableParams.do")
    3     public ModelAndView method5(@PathVariable("pname") String name,@PathVariable int age) {
    4         ModelAndView mv = new ModelAndView();
    5         mv.addObject("username", name);
    6         mv.addObject("age",age);
    7         mv.setViewName("/WEB-INF/jsp/hello.jsp");
    8         return mv;
    9     }
  • 相关阅读:
    RocketMQ源码分析:(二)消息发送的三种方式
    LTS本地搭建详述
    Mac端解决(含修改8.0.13版的密码):Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    flink入门:01 构建简单运行程序
    rocketmq控制台搭建(rocketmq-console)
    在consul上注册web服务
    将filenames里的每个字符串输出到out文件对象中注意行首的缩进
    spidermark sensepostdata ntp_monlist.py
    HTTP Error 403没有了,但是中文全都是乱码。又是怎么回事?
    original.txt和提交的页面输出的文字的混合文件
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7406755.html
Copyright © 2020-2023  润新知