mui与springMVC前后端分离

这个小dome简单来说的前后端分离,通过跨域调用接口来显示数据。

前端用到mui框架,主要来显示数据。

后端用到Java的springMVC,restful服务来做增删改查管理,

这里主要实现动态显示商品,剩下那些数据都是写固定的,不是动态的。

先看没有数据的的样子

前端的商品显示:

后台的管理:

 核心代码

package com.lch.kyu.Controller;

import com.lch.kyu.entity.Hungry;
import com.lch.kyu.service.HungryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping(path = "/hungry")
public class HungryCo {

    @Autowired
    HungryService hungryService;

    //查询
    @RequestMapping(path = "", method = RequestMethod.GET)
    public AjaxState getAllHung() {
        List<Hungry> hungries=(hungryService.queryAllHungry());
        for (Hungry h:hungries
             ) {
            System.out.println(h.getName());
        }
        boolean result=hungries!=null;
        return new AjaxState(result?"success":"error",hungries,result?"获得数据成功!":"获得数据失败!");
    }

    //添加
    @RequestMapping(path = "", method = RequestMethod.POST)
    public AjaxState addhungry(@RequestBody Hungry hungry) {
        boolean result=hungryService.addHungry(hungry);

        return new AjaxState(result?"success":"error",hungry,result?"添加成功!":"添加失败");
    }

    //修改
    @RequestMapping(path = "", method = RequestMethod.PUT)
    public AjaxState updatehungry(@RequestBody Hungry hungry) {
        boolean result=hungryService.editHungry(hungry);
        return new AjaxState(result?"success":"error",hungry,result?"修改成功!":"修改失败");
    }

    //删除
    @RequestMapping(path = "/{id}", method = RequestMethod.DELETE)
    public AjaxState deleteHungryid(@PathVariable int id) {
        Boolean result=hungryService.deleteHungry(id);
        return new AjaxState(result?"success":"error",id,result?"删除成功!":"删除失败");
    }

}

class  AjaxState{
    public String state;
    public Object data;
    public String message;

    public AjaxState(String state, Object data, String message) {
        this.state = state;
        this.data = data;
        this.message = message;
    }

    public AjaxState(){}
}

注意:这里xml配置跨域,这里配置了跨域的端口号,前端那边才正常可以调用接口,要不然会报错。这里就举例了springMVC跨域,其实还有几个方法可以实现的。

                        <!--配置跨域的端口号-->
    <mvc:cors>
        <mvc:mapping path="/**"
             allowed-origins="http://127.0.0.1:8020,http://192.168.155.1:8020,http://192.168.2.105:8020,http://172.16.1.136:8020"
             allowed-methods="POST,GET, OPTIONS,DELETE,PUT"
             allowed-headers="Content-Type,ContentType,Access-Control-Allow-Headers, Authorization, X-Requested-With"
             allow-credentials="true"/>
    </mvc:cors>

后台xml文件不配置端口号情况,相信做前后端的分离的人都见过这种情况

mui前端的代码,这里用的模板引擎来渲染页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <title>分布式应用</title>

    <link href="css/mui.min.css" rel="stylesheet"/>
    <link rel="stylesheet" href="css/JavaScript.css" />
    <style>

    </style>
</head>
<body>

<div id="zui">

         <header class="mui-bar mui-bar-nav mui-bar-nav-bg herder-color">
               全国
             <a id="icon-menu" class="mui-action-back mui-pull-left">

             </a>
                   &nbsp; <a class="mui-action-back mui-icon mui-icon-home mui-pull-right mui-a-color  color"></a>
            <h1 class="mui-title" id="mycss1">
                <!--<input type="search"  placeholder="输入商户名,产品名">
                <span class="mui-icon mui-icon-search"></span>-->
                <div class="mui-input-row ">
                        <input type="search" class="mui-input-clear" placeholder="输入商户名,产品名">
                </div>
            </h1>
        </header>

        <ul class="mui-table-view" id="center">
            <li class="mui-table-view-cell" id="tubiao">
                <div class="tjie">

                        <div class="tu1">

                                <img src="img/tb1.jpg" width="44" height="44"/>

                                <div>美食</div>
                        </div>

                        <div class="tu1">

                                <img src="img/tb2.jpg" width="44" height="44"/>

                                <div>猫眼电影</div>
                        </div>

                        <div class="tu1">
                                <img src="img/tb3.jpg" width="44" height="44"/>

                                <div>酒店</div>
                        </div>
                        <div class="tu1">
                                <img src="img/tb4.jpg" width="44" height="44"/>

                                <div>休闲娱乐</div>
                        </div>
                        <div class="tu1">
                                <img src="img/tb5.jpg" width="44" height="44"/>

                                <div>外卖</div>
                        </div>
                </div>

                    <div class="tjie">

                        <div class="tu1">

                                <img src="img/tb6.jpg" width="44" height="44"/>

                                <div>火锅</div>
                        </div>

                        <div class="tu1">

                                <img src="img/tb7.jpg" width="44" height="44"/>

                                <div>丽人</div>
                        </div>

                        <div class="tu1">
                                <img src="img/tb8.jpg" width="44" height="44"/>

                                <div>购物</div>
                        </div>
                        <div class="tu1">
                                <img src="img/tb9.jpg" width="44" height="44"/>

                                <div>周边游</div>
                        </div>
                        <div class="tu1">
                                <img src="img/tb10.jpg" width="44" height="44"/>

                                <div>KTV</div>
                        </div>
                </div>

            </li>

        </ul>

        <div id="dayi">
            <div class="dayi-o">
                <div class="dayi-right">
                    <div class="tt">好礼天天送</div>
                    <div class="ren">人人有奖领</div>
                </div>
                <div class="dayi-left">
                    <img src="img/tb11.jpg" width="55" height="55"/>
                </div>
            </div>

            <div class="dayi-o1">
                <div class="dayi-right">
                    <div class="tt">100%中奖</div>
                    <div class="ren1">送超豪华红包</div>
                </div>
                <div class="dayi-left">
                    <img src="img/tb12.jpg" width="55" height="55"/>
                </div>
            </div>

        </div>

    <script src="js/jquery-1.11.3.min.js"></script>
    <script src="artTemplate3/template.js" type="text/javascript" charset="utf-8"></script>
     <script src="js/mui.min.js"></script>

        <ul class="mui-table-view" id="tab">
        </ul>
              <script type="text/html" id="huns">
                  {{each list as pdt}}
                        <li class="mui-table-view-cell mui-media">

                               <div class="bj"><img src="images/{{pdt.pic}}" class="da" ></div>
                               <div class="name ">{{pdt.name}}</div>
                               <div class="address mui-ellipsis">{{pdt.address}}</div>
                               <div class="price">{{pdt.price | round:‘¥‘}}/<span class="meir">人</span>
                                       <span class="qian">
                                        <del>
                                            199
                                        </del>
                                    </span>
                               </div>

                                <div class="volume">已售:{{pdt.volume}}</div>
                        </li>
                  {{/each}}
               </script>

        <div id="footer">
           <nav class="mui-bar mui-bar-tab" id="foonter1">
                    <a class="mui-tab-item mui-active" href="#tabbar"  id="xin">
                        <span class="mui-icon mui-icon-home"></span>
                        <span class="mui-tab-label">首页</span>
                    </a>
                    <a class="mui-tab-item" href="#tabbar-with-chat">
                        <span class="mui-icon mui-icon-email"><span class="mui-badge">88</span></span>
                        <span class="mui-tab-label">添加</span>
                    </a>
                    <a class="mui-tab-item" href="#tabbar-with-contact">
                        <span class="mui-icon mui-icon-contact"><span class="mui-badge">12</span></span>
                        <span class="mui-tab-label">我的</span>
                    </a>
                    <a class="mui-tab-item" href="#tabbar-with-map">
                        <span class="mui-icon mui-icon-gear"></span>
                        <span class="mui-tab-label">设置</span>
                    </a>
            </nav>
        </div>

   </div>

    <script type="text/javascript" charset="utf-8">

var app = {
    //http://192.168.7.193:8020
    //http://192.168.155.1:8020
    init: function() {

        //为模板引擎定义辅助函数
        template.helper("round",function(value,mark){
            return (mark||"")+Math.round(value);
        }); //为模板引擎定义辅助函数
        this.query();

        this.sha();
    },    

    sha:function(){

        $("#xin").click(function(){

            /* location.href= location.reload();*/
            location.reload();
        });

    },

    query: function() {
        //192.168.155.1
        $.ajax("http://172.16.1.136:8080/hungry",{
            //type:请求方式
            type:"get" ,
            //服务器向客户端发送数据的类型,如:text,json
            dataType:"Json" ,
            success:function(data) {
                //alert(data);
                //console.log(data);
                $("#tab tr:not(:first)").remove();
                // $(data.data).each(function(index,hungry) {
                //     $("#tab").append("<tr align=‘center‘><td>"+hungry.id+"</td><td><img src=‘images/"+hungry.pic+"‘ class=‘da‘/></td><td>"+hungry.name+"</td><td>"+hungry.price+"</td><td>"+hungry.volume+"</td><td>"+hungry.address+"</td></tr>") ;
                // });
                $("#tab").append(template("huns",{list:data.data}));

            }
        });
    },

}
app.init();
    </script>
</body>
</html>

后台的页面的页面代码

大概把学的重点的东西列出来了,写了一次就加深自已的记忆。菜鸟笔记

原文地址:https://www.cnblogs.com/LCH-M/p/9324691.html

时间: 2024-08-27 12:26:32

mui与springMVC前后端分离的相关文章

springMVC前后端分离开发模式下支持跨域请求

1.web.xml中添加cors规则支持(请修改包名) <filter> <filter-name>cors</filter-name> <filter-class>com...common.filter.SimpleCORSFilter</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url

前后端分离跨服务器文件上传-Java SpringMVC版

近来工作上不上特别忙,加上对后台java了解一点,所以就抽时间,写了一个java版本的前后端分离的跨服务器文件上传功能,包括前后端代码. 一.Tomcat服务器部分 1.Tomcat服务器 单独复制一份Tomcat,用来作为文件服务器 1.1 xml文件: 需要在该Tomcat的conf目录下的web.xml文件的大概100行添加如下部分: 1.2 server.xml文件: 需要在该Tomcat的conf目录下的server.xml文件做一些端口的修改 1.3 Tomcat下建立文件夹 在该T

前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!

摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格项目的基本特征,即具有统一响应结构. 前后台数据流转机制(HTTP消息与Java对象的互相转化机制).统一的异常处理机制.参数验证机制.Cors跨域请求机制以及鉴权机制.此外,该项目的完整源码可移步到我的Github参考:RestSpringMVCDemo.喜欢

前后端分离springmvc和RESTful理解

1. 理解MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的Java Bean,包含一系列的成员变量及其getter/setter方法.对于视图而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样子,在Java中可通过JSP来充当视图,或者通过纯HTML的方式进行展现,而后

前后端分离的一些尝试

背景 目前使用SpringMVC框架进行开发,用户访问controller的url,controller收到页面数据后分发给serverice做处理,处理完后在controller中根据页面所需要的数据进行整合,最后将打包好的信息发给指定的页面. 根据上图我们可以看到,数据的整合是在controller层上做处理的,而页面则对整合的数据进行对应的显示,两部分需要对应好,如果增加一个对应的控件涉及到后台的数据,则页面和后端都需要修改,即使该空间的service已经存在,也需要在controller

关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)

前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站静态化技术的角度回过头来重新审视下前后端分离技术,希望通过这种审视来加深我们对两套技术的理解. 前后端分离技术我个人认为是web前端被专业化以后的必由之路,而nodejs的出现是前后端分离技术的一个强兴的催化剂,原

理解什么是前后端分离

HTML.CSS.JS. AJAX或Fetch. 学习一个前端的框架, React或者Vue或者Angularjs2都可以. 学会一个前端的路由框架, 如React-Router或者Vue-Router. 在学会3的基础上你肯定已经搭建好前端的开发环境了,所有和后端的交互走AJAX或者Fetch. SpringMVC 不再返回一个视图, 直接返回JSON. 前端从后端获取的所有数据都是JSON,至于怎么去更新页面, 你学会3后你肯定已经知道了. 页面跳转相关的东西你学会4后你肯定已经知道了. 既

前后端分离后的前端时代

本文从前端开发的视角,聊一聊前后端分离之后的前端开发的那些事儿.阅读全文,大约需要8分钟. 什么是前后端分离 除了前端之外都属于后端了. 你负责貌美如花,我负责赚钱养家 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的状态中,可以说是没有独立的"人格"可言. 前端负责切图和编写静态页面模板,后端将数据渲染到前端提供的页面模板中,最后将页面渲染到浏览器展示. 这个过程中,前端只提供页面模板或者写一些JavaScript脚本,有的甚至JS脚本都是后端来写,前端的作用只局限

【转】关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)

前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站静态化技术的角度回过头来重新审视下前后端分离技术,希望通过这种审视来加深我们对两套技术的理解. 前后端分离技术我个人认为是web前端被专业化以后的必由之路,而nodejs的出现是前后端分离技术的一个强兴的催化剂,原