• Spring MVC(四)--控制器接受pojo参数


    以pojo的方式传递参数适用于参数较多的情况,或者是传递对象的这种情况,比如要创建一个用户,用户有十多个属性,此时就可以通过用户的pojo对象来传参数,需要注意的是前端各字段的名称和pojo对应的属性名称必须一致,否则就会失败。废话不说,直接用代码举例了,我的场景是这样的:

    从页面输入四个字段,控制器通过pojo的方式接受,然后将接受到的数据渲染到新的页面,即在新的页面获取刚才传过去的值。

    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>
    
        <!-- 简单参数传递 -->
        <p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受参数方式测试</p>
        <div class="param">
            <!--pojo参数传递  -->
            <div class="pojo public">
                <p style="text-align: center;">pojo参数传递</p>
                <form id="pojoForm" action="<%=basePath%>param/pojoParam"
                    method="post">
                    <table>
                        <tr>
                            <td>id:</td>
                            <td><input type="text" name="paramId" value=""></td>
                        </tr>
                        <tr>
                            <td>名称:</td>
                            <td><input type="text" name="paramName" value=""></td>
                        </tr>
                        <tr>
                            <td>描述:</td>
                            <td><input type="text" name="paramDesc" value=""></td>
                        </tr>
                        <tr>
                            <td>时间:</td>
                            <td><input type="text" name="pramTime" value=""></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td style="text-align: right;"><input type="submit"
                                value="提交" id="setPojoParam"></td>
                        </tr>
                    </table>
                </form>
            </div>
    
    </body>
    </html>

    页面如下:

    这里将这是信息映射为一个pojo对象,所以下一步就是创建pojo对象

    2、创建pojo对象

    package com.mvc.pojo;
    
    public class Param {
        private Integer paramId;
    
        private String paramName;
    
        private String paramDesc;
    
        private String pramTime;
    
        public Integer getParamId() {
            return paramId;
        }
    
        public void setParamId(Integer paramId) {
            this.paramId = paramId;
        }
    
        public String getParamName() {
            return paramName;
        }
    
        public void setParamName(String paramName) {
            this.paramName = paramName == null ? null : paramName.trim();
        }
    
        public String getParamDesc() {
            return paramDesc;
        }
    
        public void setParamDesc(String paramDesc) {
            this.paramDesc = paramDesc == null ? null : paramDesc.trim();
        }
    
        public String getPramTime() {
            return pramTime;
        }
    
        public void setPramTime(String pramTime) {
            this.pramTime = pramTime == null ? null : pramTime.trim();
        }
    }

    注意⚠️:pojo中的属性名和前端表单中对应的字段名保持一致,开发过程直接复制,以免出错;

    3、创建控制器

    @Controller
    @RequestMapping("/param")
    public class ParamController {
    
        /**
         * 获取pojo参数:pojo的属性和表单中name必须保持一致
         * 
         * @param param
         * @return
         */
        @RequestMapping(value = "pojoParam", method = RequestMethod.POST)
        public ModelAndView getPojoParam(Param param) {
            ModelAndView mv = new ModelAndView();
            System.out.println(param.getParamName());
            System.out.println(param.getParamDesc());
            System.out.println(param.getPramTime());
            mv.addObject("param", param);
            mv.setViewName("pojoParam");
            return mv;
        }
    }

    上面的代码中,控制器接受参数的时候,直接使用一个pojo对象,这样就能通过get方法获取各个属性的值了。接受成功之后控制器会把数据渲染到新的视图pojoParam中,所以下一步就是创建pojoParam这个视图。

    4、创建响应视图pojoParam.jsp

    <%@ 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">
    <title>Pojo Param</title>
    </head>
    <body>
    
        <h2>
            获取到的参数ID:<label>${param.paramId }</label> <br /> 获取到的参数名称:<label>${param.paramName }</label><br />
            获取到的参数描述:<label>${param.paramDesc }</label><br /> 获取到的参数时间:<label>${param.pramTime }</label><br />
        </h2>
    
    </body>
    </html>

    在这个视图中显示数据,即将数据渲染到视图。至此代码全部完成,下面进行测试,首先在页面输入以下数据:

    然后点击提交按钮,结果如下:

    可以看到接受成功,渲染也成功,URL地址也跟着发生了变化。

    5、总结

    这种方式和上一篇中提到的方式,都有一个约定,就是前端的参数名和后端的参数名或 pojo对象中的属性名称必须保持一致,但是有时候前后端的命名规则不一致,比如前端使用下划线方式命名,如user_name,而后端时候驼峰式命名,如userName,这样就不能使用这种方式传递了,而是通过注解,下一篇文章中介绍。

  • 相关阅读:
    mbedtls安装与入门【转】
    SpringAop代理对象调用过程(八)
    SpringAOP理解-代理对象创建(七)
    NIO与零拷贝
    NIO实现群聊系统
    SpringAOP概述(六)
    NIO简介以及三大组件(BufferChannelSelector)基本使用
    BIO基本介绍以及使用
    Netty简介
    Spring循环依赖解决(五)
  • 原文地址:https://www.cnblogs.com/hellowhy/p/9741286.html
Copyright © 2020-2023  润新知