zoukankan      html  css  js  c++  java
  • SpringMVC(三)——处理请求数据

    1.form组件

    action属性表示提交地址

    method属性表示提交方式

    表单内容可以有< input>、< textarea>、< button>、< select>、< option>、< optgroup>、< fieldset>、< label>等标签

    2.传递字面量参数

    (1)在处理请求的方法中,加入相对应的形参,保证形参的名字 和 传递数据的名 保持一致,就可以自动赋值。

    (2)如果名字不一样,可以用@RequestParam注解 标识 哪个形参对应哪个数据。

        @RequestMapping(value="/param",method=RequestMethod.POST)
        public String param(@RequestParam(value="name",required=false,defaultValue="守林鸟")String username,String password,String age) {
            System.out.println("username="+username+" password="+password+" age="+age);
            return "success";
        }
         <form action="param" method="post">
             username:<input type="text" name="name"/> <br />
             password:<input type="text" name="password"/> <br />
             age:<input type="text" name="age"/> <br />
             <input type="submit" value="提交">
             <!-- text是默认的 -->
         </form>
    • value表示该形参对应哪个提交过来的数据名
    • required默认为true,表示传递的数据中必须要有名叫name的,否则会报错,改为false则可有可无
    • defaultValue表示没有这个值的时候的默认

    显然,如果参数太多则代码臃肿

    4.非自定义的数据则直接用相关注解修饰形参

    • 请求头:@RequestHeader
    • cookie:@CookieValue

    5.传递POJO类型

    要求实体类对象中的属性名要和表单中的name属性值一致,支持级联关系(POJO封装POJO)。

        @RequestMapping(value="/param",method=RequestMethod.POST)
        public String param(User user) {
            System.out.println(user);
            return "success";
        }
         <form action="param" method="post">
             username:<input type="text" name="username"/> <br />
             password:<input type="text" name="password"/> <br />
             age:<input type="text" name="age"/> <br />
             province:<input type="text" name="address.province"/> <br />
             city:<input type="text" name="address.city"/> <br />
             <input type="submit" value="提交">
             
             <!-- text是默认的 -->
             
         </form>

    通过[.]来实现级联关系,如果还有下一层,再来一个[.]。

    6.获取ServletAPI

    直接在响应方法里写形参,例如HttpServletRequest、HttpServletResponse、HttpSession

        @RequestMapping(value="/param",method=RequestMethod.POST)
        public String param(HttpServletRequest request) {
            System.out.println("request="+request);
            System.out.println(request.getParameter("username"));
            return "success";
        }

    7.传递数组

    直接用(类型[] 形参)就可以,在表单中相同名字的都被弄进数组

     8.传递集合

    不支持这种形参方式,需要将集合放在一个类里作为属性封装。例如一个List<User>类型在form表单中写list[0].username、list[1].password。

    9.往作用域中放值

    • ModelAndView:mav.addObject(String,Object);
    • Map:map.put(String,Object);
    • Model:model.addAttribute(String,Object);

    10.中文乱码问题

    在web.xml中配置编码过滤器

        <!-- 配置编码过滤器 -->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>        
            <filter-class>
                   org.springframework.web.filter.CharacterEncodingFilter
            </filter-class>
            <init-param>
                <param-name>encoding</param-name>
                   <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
               <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
  • 相关阅读:
    Cobbler-自动化部署神器
    ssh,公钥和私钥,远程复制
    VIM文本替换命令
    #!/usr/bin/env bash和#!/usr/bin/bash的比较
    [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解
    mount命令中offset参数的意义
    ironic+nova详解
    【ironic】ironic介绍与原理
    在进行商业运算时解决BigDecimal的精度丢失问题
    后台商品搜索功能开发SQL
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/13069848.html
Copyright © 2011-2022 走看看