SSM项目实战:酒店管理系统

使用的技术栈:Spring+SpringMVC+mybatis+Mysql+layui+Maven

  • Maven 项目结构。项目配置项为:

  • 服务器:apache-tomcat-9.0.0.M26 (必须 9 以上)

  • 数据库:MySQL

  • 编辑器:IntelliJ IDEA

--Lay ui 的官网参考文档:Layui - 经典开源模块化前端 UI 组件库


核心代码实现:

package com.jiudian.controller.admin;

import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

/**
 * 负责跳转后台管理页面:
 */
@org.springframework.stereotype.Controller
/**
 * @author Lenovo
 */
@RequestMapping("/admin")
public class SystemController {
    /**
     *  跳转登陆页面:
     */
    @RequestMapping("/login.html")
    public String login(){
        return "admin/login";
    }
    /**
     * 跳转到登陆成功页面(后台管理首页):
     */
    @RequestMapping("/home.html")
    public String home(){
        return "admin/home";
    }

    /**
     * 退出登录,放到用户控制器因为有无刷新:
     */
    @RequestMapping("/loginOut.html")
    public String loginOut(HttpSession session) {
        //清空session:
        session.invalidate();
        //重定向到登陆页面:
        return "redirect:/admin/login.html";
    }

    /**
     *进入部门管理页面
     */
    @RequestMapping("/toDeptManager.html")
    public String toDeptManager(){
        return "admin/dept/deptManager";
    }

    /**
     * 进入角色管理:
     */
    @RequestMapping("/toRoleManager")
    public String toRoleManager(){
        return "admin/role/roleManager";
    }

    /**
     *进入用户管理:
     * @return
     */
    @RequestMapping("/toUserManager")
    public String toUserManager(){
        return "admin/user/userManager";
    }

    /**
     * 进入房型管理页面:
     * @return
     */
    @RequestMapping("/toRoomManager")
    public String toRoomManager(){
        return "admin/room/roomManager";
    }

    /**
     * 进入楼层管理:
     * @return
     */
    @RequestMapping("/toFloorManager")
    public String toFloorManager(){
        return "admin/floor/floorManager";
    }

    /**
     * 进入房间管理页面:
     * @return
     */
    @RequestMapping("/toRoomsManager")
    public  String toRoomsManager() {
        return "admin/rooms/roomsManager";
    }
}

使用前端layui框架搭建后台登录页面:

<div id="container">
    <div></div>
    <div class="admin-login-background">
        <div class="admin-header">
            <span>酒店管理系统 </span>
        </div>
        <form class="layui-form" action="">
            <div>
                <i class="layui-icon layui-icon-username admin-icon"></i>
                <input type="text" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input admin-input admin-input-username">
            </div>
            <div>

            </div>
            <div>
                <i class="layui-icon layui-icon-password admin-icon"></i>
                <input type="password" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input admin-input">
            </div>

            <!--按钮加上lay-filter过滤器才可以绑定!!! -->
            <button class="layui-btn admin-button" lay-submit="" lay-filter="login">登 陆</button>
        </form>
    </div>
</div>

实现效果如下:


 登录成功主菜单页面的核心代码:

package com.jiudian.controller.admin;

import com.alibaba.fastjson.JSON;
import com.jiudian.dao.SysMenuMapper;
import com.jiudian.entiy.SysMenu;
import com.jiudian.utils.MenuNode;
import com.jiudian.utils.TreeUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.LinkedTransferQueue;

/**
 * @author Lenovo
 */
//全部(返回JSON数据)无刷新:restConller=@Controller+++@ResponseBody:
//不用每个方法都加ResponseBody:

@RestController
@RequestMapping("/admin/menu")
public class SysMenuController {

    /**
     * 注入SysMenuMapper
     */
    @Resource
    private SysMenuMapper sysMenuMapper;

    /**
     * 加载首页左侧菜单的导航
     * @return
     */
    @RequestMapping("/loadSysMenuList")
    public String loadSysMenuList(){

        /**
         * 调用查询所有菜单列表的方法
         */
        List<SysMenu> menuList = sysMenuMapper.findMenuList();
        //创建集合接收menuNode保存菜单逻辑关系:
        List<MenuNode> menuNodeList= new ArrayList<MenuNode>();
        //创建Map集合保存MenuInfo信息:
        Map<String,Object> menuInfo = new LinkedHashMap<String,Object>();
        //创建Map集合,保存HomeInfo信息(需要与模板保持一致):
        Map<String,Object> homeInfo = new LinkedHashMap<String,Object>();
        //创建Map集合,保存LogoInfo信息(需要与模板保持一致):
        Map<String,Object> logoInfo = new LinkedHashMap<String,Object>();
        /**
         * 循环遍历菜单列表,目的是创建菜单之间的层级关系(逻辑关系);
         */
        for (SysMenu sys : menuList) {
            //创建节点对象:
            MenuNode menuNode = new MenuNode();
            //打开链接地址
            menuNode.setHref(sys.getHref());
            //菜单头标样式
            menuNode.setIcon(sys.getIcon());
            //菜单编号
            menuNode.setId(sys.getId());
            //所属的父级菜单
            menuNode.setPid(sys.getPid());
            //是否展开(0-否  1-是)
            menuNode.setSpread(sys.getSpread());
            //打开方式:是否展开
            menuNode.setTarget(sys.getTarget());
            //菜单名称
            menuNode.setTitle(sys.getTitle());
            //将对象添加到集合:
            menuNodeList.add(menuNode);

        }

        //保存HomeInfo信息:
        homeInfo.put("title","首页");
            //跳转到子菜单中:
            homeInfo.put("href","");
        //保存LoginInfo信息:
        //logo标题:
        logoInfo.put("title","酒店管理系统");
            //包含图片:
            logoInfo.put("image","/statics/layui/images/logo1.png");
            //跳转到首页:
            logoInfo.put("href","/admin/home.html");
        //将菜单集合添加到MenuInfo集合中:
        //pid就是父菜单:
        menuInfo.put("menuInfo", TreeUtil.toTree(menuNodeList,0));
        menuInfo.put("homeInfo",homeInfo);
        menuInfo.put("logoInfo",logoInfo);

        return JSON.toJSONString(menuInfo);

    }

}

采用layui前端框架搭建后台页面核心代码:

<script>
    layui.use(['jquery', 'layer', 'miniAdmin','miniTongji'], function () {
        let $ = layui.jquery,
            layer = layui.layer,
            miniAdmin = layui.miniAdmin,
            miniTongji = layui.miniTongji;

        let options = {
            iniUrl: "${pageContext.request.contextPath}/admin/menu/loadSysMenuList",    // 初始化接口:已经定义过接口不再使用json文件了。
            clearUrl: "${pageContext.request.contextPath}/statics/layui/api/clear.json", // 缓存清理接口
            urlHashLocation: true,      // 是否打开hash定位
            bgColorDefault: false,      // 主题默认配置
            multiModule: true,          // 是否开启多模块
            menuChildOpen: false,       // 是否默认展开菜单
            loadingTime: 0,             // 初始化加载时间
            pageAnim: true,             // iframe窗口动画
            maxTabNum: 20,              // 最大的tab打开数量
        };
        miniAdmin.render(options);

        // 百度统计代码,只统计指定域名
        miniTongji.render({
            specific: true,
            domains: [
                '99php.cn',
                'layuimini.99php.cn',
                'layuimini-onepage.99php.cn',
            ],
        });

        $('.login-out').on("click", function () {
            //在layui官网文档配置是否退出登录:
            layer.confirm('确定要退出系统?', {icon: 3, title:'提示'}, function(index){
                //do something
                //如果退出发送请求:
                location.href="/admin/loginOut.html"
                layer.close(index);
            });
        });
    });
</script>

页面实现效果:

 


总结:适合初学SSM的小伙伴们的一个上手项目实战,有助于对SSM框架更进一步的熟悉了解,后期可能推出基于Springboot实现JavaWeb酒店管理系统,有兴趣的可以了解一下,麻烦点赞关注一下,需要源码和数据库的私信up主。

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSM(Spring + Spring MVC + MyBatis)框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一层楼。 二、资料亮点 基础教程与练习项目:从基础知识讲起,结合实际练习项目,让您轻松上手SSM开发。 进阶技术与案例分析:针对进阶开发者,提供深入的技术探讨和案例分析,助您深入理解SSM的高级特性。 实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您学习SSM的得力助手。适用于Java Web开发、企业级应用开发、个人项目实践等多个领域。 四、使用建议 系统学习:按照资料提供的顺序进行系统学习,确保知识体系的完整性。 实践为王:在学习过程中注重实践操作,通过实际项目加深理解。 持续反馈与调整:根据学习进度和反馈,适时调整学习策略,提高学习效果。 五、安全与责任 在使用SSM框架进行开发时,请确保遵循最佳实践和安全准则,以保障系统的稳定性和安全性。在使用提供的资料时,请遵守版权法规,尊重原作者的权益。让我们共同为推动SSM技术的发展而努力!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值