ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC(三)——处理请求数据

2020-06-17 22:57:22  阅读:202  来源: 互联网

标签:username 请求 形参 SpringMVC param 处理 value password String


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>

 

标签:username,请求,形参,SpringMVC,param,处理,value,password,String
来源: https://www.cnblogs.com/shoulinniao/p/13069848.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有