spring boot + freemarker 框架开发,前后端数据交互方式总结

1、前端是Get请求,后端直接返回数据列表
前端js函数:

    function getBtnclick() {
    var ss="";
    $("input[name='selcolTypeChild']").each(function () {
        ss += $(this).val().toString() + ",";
    })
    ss = ss.substr(0,ss.length-1)
    $.ajax({
        type: "GET",
        datatype: "JSON",
        url: "/one_child?datewhere=" +  ss,
        success: function (mUvList) {
            if (mUvList != null) {
                var datalist = JSON.parse(JSON.stringify(mUvList));
                var datax = []
                var datay = []
                for(var i=0;i<datalist.length;i++)
                {
                    datax.push(datalist[i].date_time)
                    datay.push(datalist[i].count)
                }
                DrawBasiclineCharts(datax, datay, "chartmain")
            }
        },
        error: function (selcolumnValuelist) {
            alert("请求超时")
        }
    });
}

controller中:

@ResponseBody
@GetMapping("/one_child")
public List<MeceUv> getData(@RequestParam("datewhere") String datewhere) {
    String[] dateTime = datewhere.split(",");
    List<MeceUv> mUvList = new ArrayList<>();
    mUvList = meceService.GetUVRate(dateTime[0], dateTime[1]);
    return mUvList;
}

2、crontroller中返回ModelAndView
crontroller:

@GetMapping("/wmzy_dattareport_init_oneone")
public ModelAndView initWmzyIndexOne(ModelAndView model) {
    ModelAndView mod = new ModelAndView();
    int ucount = wmzyReportDataSevInterface.GetTotalRegUser(11100);
    model.addObject("utextcount", ucount);
    model.addObject("textTitle", "累计注册用户");
    model.addObject("textNotice", "累计注册用户");
    model.setViewName("/wmzy_datareport/textshow");
    return model;
}

前端:
ModelAndView 返回到前端后,前端将modelandview的内容添加到div控件中

$.ajax({
    type: "GET",
    datatype: "JSON",
    url: "/wmzy_dattareport_init_oneone",
    success: function (model) {
        $("#tdone_one").empty()
        $("#tdone_one").append(model)
    },
    error: function (selcolumnValuelist) {
        alert("请求超时")
    }
});

3、 post请求
前端:
定义iframe盛放后端返回的结果页面

<div><iframe id="usertabframe" name="usertabframe" style="background-color: white;height:600px" onload="changeFrameHeight()" ></iframe>
</div>

form表单中设置target属性

   <form method="POST" action="guestData" accept-charset="UTF-8" target="usertabframe">
          ...
        <button id="getdatabtn" type="submit" width="120" >获取数据</button>
    </form>

Crontroller:

@PostMapping("/guestData")
public ModelAndView getGuestData(@RequestParam("selcolTypeChildw") String strselcheck, ModelAndView attr) {

    String strselid = "1003";
    String strSelCheck = strselcheck;
    //分析选中字段
    String sqlWhere = "";
    if (strSelCheck != null) {
        Map<String, List<String>> msl = new HashMap<String, List<String>>();
        msl = ssiData.GetSelColWhere(strSelCheck);
        sqlWhere = ssiData.GetWhereStatment(msl);
    }
    //根据选中的表获取数据
    if (strselid.equals("1003")) {
        if (strSelCheck != null || !sqlWhere.isEmpty()) {
            String[] datelist = reportDataSevInterface.GetRegisterDate(strSelCheck);
            List<UserRegisterCount> ulist = reportDataSevInterface.GetUserInfoDataBySta(datelist[0], datelist[1], sqlWhere);
            attr.addObject("userlist", ulist);
        } else {
            List<UserRegisterCount> userlistt = new ArrayList<>();
            attr.addObject("userlist", userlistt);
        }
    }
    attr.setViewName("./wmzy/wmzy_tableData");
    return attr;
}

4、 freemarker 模板后台直接赋值
前端:

<select name="tablesName" id="tablesName" class="form-control" onchange="BpSelChange()">
    <option value="111">--请选择--</option>
    <#if rolelist?? && (rolelist?size > 0) >
        <#list rolelist as allt>
    <option value="${(allt.role_id)?c}"
    <#if ( "${selid}" == "${allt.role_id?c}")>selected="selected"</#if>>
        ${(allt.role_name)!}</option>
        </#list>
    </#if>
</select>

Crontroller:

   @PostMapping(value="login")
    public ModelAndView login(@RequestParam("username")String username, @RequestParam("password")String pwd, ModelAndView mod){

        if(pwd.equals("123456")){
            if(username.equals("guest"))
            {
                mod.addObject("admin",username); 
                List<Role> rlist = new ArrayList<>();
                Role role = new Role();
                role.setRole_id(1);
                role.setRole_name("学生");
                rlist.add(role);
                Role role0= new Role();
                role0.setRole_id(0);
                role0.setRole_name("未知");
                rlist.add(role0);
                Role role2 = new Role();
                role2.setRole_id(2);
                role2.setRole_name("家长");
                rlist.add(role2);
                Role role3 = new Role();
                role3.setRole_id(3);
                role3.setRole_name("老师");
                rlist.add(role3);
                mod.addObject("rolelist",rlist); 
                mod.setViewName("/index");
            }
        }
        return mod;
    }

5、表单提交
前端:

  <form method="POST" action="login" accept-charset="UTF-8">
            <div id="login">
                <table>
                    <tr height="60">
                        <td class="text-dark">用户名:</td>
                        <td><input width="150" name="username" class="form-control" type="text" required></td>
                    </tr>
                    <tr height="60">
                        <td class="text-dark">密码:</td>
                        <td><input width="150" name="password" class="form-control" type="password" required></td>
                    </tr>
                    <tr height="60">
                        <td></td>
                        <td>
                            <button type="submit" class="btn btn-primary btn-block">登陆</button>
                        </td>
                        <td></td>
                    </tr>
                </table>
            </div>
        </form>

crontroller:

@PostMapping(value="login")
public ModelAndView login(@RequestParam("username")String username, @RequestParam("password")String pwd, ModelAndView mod){

    if(pwd.equals("123456")){
        if(username.equals("guest"))
        {
            mod.addObject("admin",username);
        }
    }
    return mod;
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于构建Java应用的开发框架,它提供了简化的配置和快速的开发方式。FreeMarker是一个Java模板引擎,它可以在模板中嵌入动态内容,生成动态的网页或其他文本格式。MyBatis是一个持久化框架,它可以与数据库进行交互,实现数据的增删改查功能。MySQL是一个开源的关系型数据库管理系统,它提供了高效可靠的数据存储和检索。 结合这些技术,我们可以开发一个商城系统。首先,使用Spring Boot框架来搭建项目的骨架,包括配置数据库连接、Web服务器等。然后,通过MyBatis框架来定义商品、订单等数据表的实体对象,并编写相应的数据访问层接口和实现。使用MySQL数据库来存储这些数据。 接下来,使用FreeMarker模板引擎来设计和生成商城的前端页面。我们可以通过在模板中嵌入动态的数据,展示商品列表、订单信息等内容。同时,可以使用FreeMarker的标签和语法来实现页面的逻辑控制、表单验证等功能。 在商城系统中,用户可以浏览商品、购买商品、查看订单等。我们可以通过设计相应的控制器和路由来实现这些功能,并在前端页面中添加相应的链接和按钮。用户购买商品时,可以将订单信息保存到数据库中,以便后续的订单管理和发货等操作。 总之,使用Spring BootFreeMarker、MyBatis和MySQL等技术,我们可以很方便地开发一个商城系统。通过这些技术的结合,我们可以实现商城的后台数据管理和前台页面展示,为用户提供便捷的购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值