ICode9

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

请求参数的绑定

2021-01-24 17:01:49  阅读:98  来源: 互联网

标签:请求 绑定 System param 参数 println public out


请求参数的绑定

一:请求参数的绑定说明

(1)绑定机制

  1. 表单提交的数据都是key=value格式的。
  2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
  3. 要求:表单中的name和参数的名称是相同的

(2)支持的数据类型

  1. 基本的数据类型和字符串类型
  2. 实体类型
  3. 集合数据类型

二:基本数据类型和字符串数据类型

//param.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--请求参数绑定的讲解--%>
    <a href="param/testParam?username=周杰伦">请求参数绑定</a>
</body>
</html>
@Controller
@RequestMapping("/param")
public class ParamController {
    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username){
        System.out.println("执行了。。。。");
        System.out.println(username);
        return "success";
    }
}

三:实体类型

(1)案例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--请求参数绑定实体类型--%>
    <form action="param/saveAccount" method="post">
        <%--input中的name属性值要和实体类中的属性一样--%>
        姓名:<input type="text" name="username"><br/>
        密码:<input type="text" name="password"><br/>
        金额:<input type="text" name="money"><br/>
        <%--在Account类中封装User对象属性
                注意name属性值的写法:
        --%>
        用户姓名:<input type="text" name="user.uname"><br/>
        用户年龄:<input type="text" name="user.age"><br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>
@Controller
@RequestMapping("/param")
public class ParamController {
    /**
     * 请求参数据绑定到一个JavaBean的类中
     */
    @RequestMapping("/saveAccount")
    public String savaAccount(Account account){
        System.out.println("执行了.............");
        System.out.println(account);
        return "success";
    }
}

(2)配置post请求中文乱码问题的过滤器

注意:get请求没有乱码问题

//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>

四:集合类型

//param.jsp中部分语句
 <%--请求参数绑定集合类型--%>
    <%--把数据封装在Account类中,类中存在list和map集合--%>
    <%--实体类型--%>
    <form action="param/saveAccount" method="post">
        <%--input中的name属性值要和实体类中的属性一样--%>
        姓名:<input type="text" name="username"><br/>
        密码:<input type="text" name="password"><br/>
        金额:<input type="text" name="money"><br/>
        <%--封装到list集合--%>
        用户姓名:<input type="text" name="list[0].uname"><br/>
        用户年龄:<input type="text" name="list[0].age"><br/>
        <%--封装到map集合--%>
        用户姓名:<input type="text" name="map['one'].uname"><br/>
        用户年龄:<input type="text" name="map['one'].age"><br/>
        <input type="submit" value="提交">
    </form>
@Controller
@RequestMapping("/param")
public class ParamController {
    /**
     * 请求参数据绑定到一个JavaBean的类中
     */
    @RequestMapping("/saveAccount")
    public String savaAccount(Account account){
        System.out.println("执行了.............");
        System.out.println(account);
        return "success";
    }
}

五:自定义类型转换器

//把字符串转换成日期
public class StringToDateConverter implements Converter<String, Date> {
    /**
     * 传入进来的字符串
     * @param
     * @return
     */
    @Override
    public Date convert(String source) {
        //判断
        if (source == null){
            throw new RuntimeException("请您传入数据");
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            //把字符串转换日期
            return df.parse(source);
        } catch (ParseException e) {
            throw new RuntimeException("数据类型转换出现异常");
        }
    }
}
//springmvc.xml
    <!--配置自定义类型转换器-->
    <bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.hgk.utils.StringToDateConverter"></bean>
            </set>
        </property>
    </bean>
    <!--开启SpringMVC框架注解的支持        -->
    <mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

六:获取原生Servlet接口

    /**
     * 获取原生Servlet
     * @param request
     * @param response
     * @return
     */
    @RequestMapping("/testServlet")
    public String testServlet(HttpServletRequest request, HttpServletResponse response){
        System.out.println("执行了。。。。。。。");
        System.out.println(request);
        HttpSession session = request.getSession();
        System.out.println(session);
        return "success";
    }

标签:请求,绑定,System,param,参数,println,public,out
来源: https://blog.csdn.net/h1786112/article/details/113092807

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

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

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

ICode9版权所有