• Spring MVC(十)--通过表单序列化传递参数


    通过表单序列化传递参数就是将表单数据转化成字符串传递到后台,序列化之后参数请求变成这种模式param1=value1&&param2=value2,下面用代码实现。

    1、创建表单

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <%
        String root = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
                + root + "/";
    %>
    <script type="text/javascript"
        src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script>
    <script type="text/javascript" src="<%=basePath%>js/param.js"></script>
    <link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet">
    <title>Insert title here</title>
    </head>
    <body>
        <div class="param">
            <div class="simple public">
            <!--表单序列化传递参数 -->
            <div class="public formSerial">
                <p style="text-align: center;">表单序列化传递参数</p>
                <form id="formSerialForm">
                    <table id="formSerialTable">
                        <tr>
                            <td>id:</td>
                            <td><input type="text" name="id" value=""></td>
                        </tr>
                        <tr>
                            <td>名称:</td>
                            <td><input type="text" name="name" value=""></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td style="text-align: right;"><input type="button"
                                value="提交" id="setFormSerialParam"></td>
                        </tr>
                    </table>
                </form>
            </div>
        </div>
    
    </body>
    </html>

     页面效果图如下:

    2、绑定提交请求事件

    $(function() {
    
        /* 表单序列化方式传递数据 */
    
        $("#setFormSerialParam").click(function() {
            $.ajax({
                url : "./formSerial",
                type : "POST",
                /* 将form数据序列化之后传给后台,数据将以id=**&&name=** 的方式传递 */
                data : $("#formSerialForm").serialize(),
                success : function(data) {
                    console.info(data.stringList);
                }
            });
        });
    });

     上面红色加粗的部分就是表单的序列化。

    3、创建控制器接受参数

    @Controller
    @RequestMapping("/param")
    public class ParamController {
    
        /**
         * 获取表单序列化数据 参数名称和表单中的name保持一致
         * 
         * @param idList
         * @return
         */
        @RequestMapping(value = "formSerial")
        public ModelAndView getParamByFormSerial(String id, String name) {
            ModelAndView mv = new ModelAndView();
            String[] paramArray = { id, name };
            mv.addObject(paramArray);
            mv.setView(new MappingJackson2JsonView());
            return mv;
        }
    
    }

    红色加粗部分为接受参数的方式,其实这种方式跟第一种简单参数的接受方式是一样的,只不过提交表单数据的方式不一样罢了。上面的控制器中直接将获取的参数渲染到JSON视图中。

    4、测试

    在页面输入如下参数:

    点击提交查看请求URL,可以看到参数传递成功

    查看响应结果:

    可以看到返回了一个字符串列表,列表数据就是前端输入的值,说明控制器获取成功。

    5、总结

    至此,Spring MVC中参数传递和接受的所有方法都已经总结完毕,需要注意以下几点:

    • pojo类型、JSON类型和对象数组类型的参数传递,都要保证前端的参数名和对应POJO中的属性名一致;
    • 简单类型和序列表单方式传递时,也要保证前后端的参数名称一致;
    • 通过JSON和列表方式传递时,前端需要指定数据类型为application/json,并且数据要转化成字符串传递;
    • 注解方式比较灵活,不要求前后端命名规则一样;

    实际开发过程中,需要根据情况选择合适的接受方式。

  • 相关阅读:
    2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
    软工作业(1)课程学习热身
    用户体验分析:以 “师路南通网站” 为例
    用户体验分析: 以 “南通大学教务管理系统微信公众号” 为例
    软件工程第二次作业:硬币游戏—— 代码分析与改进
    自我介绍
    用户体验分析---以师路南通为例
    用户体验分析---七八点照相馆
    硬币游戏—— 代码分析与改进
    About me
  • 原文地址:https://www.cnblogs.com/hellowhy/p/9741364.html
Copyright © 2020-2023  润新知