天天看點

Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include

原文位址: http://www.work100.net/training/monolithic-project-iot-cloud-admin-manager.html 更多教程: 光束雲 - 免費課程

使用include

請參照如上

章節導航

進行閱讀

1.功能子產品細分

接下來實作

背景賬戶管理

功能,我們繼續完善

iot-cloud-web-admin

項目。

首先,我們将功能子產品細化為:

auth

iot

,将涉及賬戶相關功能放在

auth

子產品下,将涉及物聯網相關功能放在

iot

子產品下。

然後,構模組化塊結構:

  • net.work100.training.stage2.iot.cloud.web.admin.web.controller

    包下新增

    auth

    iot

  • webapp/WEB-INF/views

    檔案夾下新增

    auth

    iot

    檔案夾

2.建立ManagerController控制器

web.controller.auth

包下建立

ManagerController

類,代碼如下:

package net.work100.training.stage2.iot.cloud.web.admin.web.controller.auth;

import net.work100.training.stage2.iot.cloud.web.admin.service.AuthManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * <p>Title: ManagerController</p>
 * <p>Description: </p>
 * <p>Url: http://www.work100.net/training/monolithic-project-iot-cloud-admin.html</p>
 *
 * @author liuxiaojun
 * @date 2020-03-01 14:01
 * ------------------- History -------------------
 * <date>      <author>       <desc>
 * 2020-03-01   liuxiaojun     初始建立
 * -----------------------------------------------
 */
@Controller
@RequestMapping(value = "auth/manager")
public class ManagerController {

    @Autowired
    private AuthManagerService authManagerService;

    @RequestMapping(value = "list", method = RequestMethod.GET)
    public String list(){
        return "auth/manager_list";
    }
}           

說明:

ManagerController

類上的注解

@RequestMapping(value = "auth/manager")

  • 作用:控制器下的所有方法的請求路徑都将增加字首,即:

    auth/manager/*

  • 舉例:

    list

    方法,請求路徑為:

    auth/manager/list

3.建立manager_list.jsp頁面

views/auth/

檔案夾下建立

manager_list.jsp

頁面,代碼如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>背景賬戶</title>
</head>
<body>
    賬戶清單
</body>
</html>           

4.運作并檢視效果

啟動

Tomcat

登入後,點選菜單

背景賬戶 - 查新清單

,界面如下圖:

Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include

5.通過include引入公用檔案

5.1.通用布局

參照我們的

首頁布局

,可見界面布局上有一些通用部分,如下圖:

Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include

其中紅色區域為每個頁面都包含的,藍色區域為每個頁面特有的。

既然每個頁面都包含紅色區域的

通用部分

,那麼我們就需要将其提取出來,這裡将使用

<jsp:include >

來實作。

5.2.提取通用布局到檔案

views

檔案夾下新增一個

includes

檔案夾,然後提取下表的通用内容為檔案,并存儲到

includes

下:

檔案位置 作用
includes/resources_head.jsp 在頁面

header

标簽中引入

資源

includes/resources_body.jsp

body

資源

includes/layout_header.jsp 頁面頂部通用部分
includes/layout_left.jsp 頁面左側通用部分(菜單)
includes/layout_footer.jsp 頁面底部通用部分(版權資訊)

resources_head.jsp 代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Font Awesome Icons -->
<link rel="stylesheet" href="/static/assets/plugins/fontawesome-free/css/all.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="/static/assets/css/adminlte.min.css">
<link rel="icon" href="/static/assets/img/favicon.ico">           

resources_body.jsp 代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- REQUIRED SCRIPTS -->

<!-- jQuery -->
<script src="/static/assets/plugins/jquery/jquery.min.js"></script>
<!-- Bootstrap -->
<script src="/static/assets/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE -->
<script src="/static/assets/js/adminlte.js"></script>           

layout_header.jsp 代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!-- Navbar -->
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
    <!-- Left navbar links -->
    <ul class="navbar-nav">
        <li class="nav-item">
            <a class="nav-link" data-widget="pushmenu" href="#"><i class="fas fa-bars"></i></a>
        </li>
        <li class="nav-item d-none d-sm-inline-block">
            <a href="/" class="nav-link">首頁</a>
        </li>
        <li class="nav-item d-none d-sm-inline-block">
            <a href="/auth/manager/list" class="nav-link">背景賬戶</a>
        </li>
        <li class="nav-item d-none d-sm-inline-block">
            <a href="/auth/tenant/list" class="nav-link">租戶</a>
        </li>
    </ul>

    <!-- Right navbar links -->
    <ul class="navbar-nav ml-auto">
        <li class="nav-item dropdown">
            <a class="nav-link" data-toggle="dropdown" href="#">
                <i class="nav-icon fas fa-user-circle"></i>
                ${manager.userName}
                <i class="fas fa-angle-down right"></i>
            </a>
            <div class="dropdown-menu dropdown-menu-md dropdown-menu-right">
                <a href="/my/profile" class="dropdown-item">
                    <i class="fas fa-address-card mr-2"></i>我的資料
                </a>
                <div class="dropdown-divider"></div>
                <a href="/my/change-password" class="dropdown-item">
                    <i class="fas fa-lock mr-2"></i>修改密碼
                </a>
                <div class="dropdown-divider"></div>
                <a href="/logout" class="dropdown-item">
                    <i class="fas fa-sign-out-alt mr-2"></i>退出
                </a>
            </div>
        </li>
    </ul>
</nav>
<!-- /.navbar -->           

layout_left.jsp 代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-dark-primary elevation-4">
    <!-- Brand Logo -->
    <a href="/" class="brand-link">
        <img src="/static/assets/img/logo-128x128.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
             style="opacity: .8">
        <span class="brand-text font-weight-light">IoT-Admin</span>
    </a>

    <!-- Sidebar -->
    <div class="sidebar">
        <!-- Sidebar Menu -->
        <nav class="mt-2">
            <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
                <!-- Add icons to the links using the .nav-icon class
                     with font-awesome or any other icon font library -->
                <li class="nav-item">
                    <a href="/main" class="nav-link">
                        <i class="nav-icon fas fa-tachometer-alt"></i>
                        <p>
                            控制台
                        </p>
                    </a>
                </li>
                <li class="nav-item has-treeview">
                    <a href="#" class="nav-link">
                        <i class="nav-icon fas fa-user"></i>
                        <p>
                            背景賬戶
                            <i class="fas fa-angle-left right"></i>
                        </p>
                    </a>
                    <ul class="nav nav-treeview">
                        <li class="nav-item">
                            <a href="/auth/manager/add" class="nav-link">
                                <i class="far fa-edit nav-icon"></i>
                                <p>新增</p>
                            </a>
                        </li>
                        <li class="nav-item">
                            <a href="/auth/manager/list" class="nav-link">
                                <i class="far fa-list-alt nav-icon"></i>
                                <p>查詢清單</p>
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="nav-item has-treeview">
                    <a href="#" class="nav-link">
                        <i class="nav-icon fas fa-store-alt"></i>
                        <p>
                            租戶
                            <i class="fas fa-angle-left right"></i>
                        </p>
                    </a>
                    <ul class="nav nav-treeview">
                        <li class="nav-item">
                            <a href="/auth/tenant/add" class="nav-link">
                                <i class="far fa-edit nav-icon"></i>
                                <p>新增</p>
                            </a>
                        </li>
                        <li class="nav-item">
                            <a href="/auth/tenant/list" class="nav-link">
                                <i class="far fa-list-alt nav-icon"></i>
                                <p>查詢清單</p>
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="nav-item has-treeview">
                    <a href="#" class="nav-link">
                        <i class="nav-icon fas fa-user-friends"></i>
                        <p>
                            租戶賬戶
                            <i class="fas fa-angle-left right"></i>
                        </p>
                    </a>
                    <ul class="nav nav-treeview">
                        <li class="nav-item">
                            <a href="/auth/tenant/user/add" class="nav-link">
                                <i class="far fa-edit nav-icon"></i>
                                <p>新增</p>
                            </a>
                        </li>
                        <li class="nav-item">
                            <a href="/auth/tenant/user/list" class="nav-link">
                                <i class="far fa-list-alt nav-icon"></i>
                                <p>查詢清單</p>
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </nav>
        <!-- /.sidebar-menu -->
    </div>
    <!-- /.sidebar -->
</aside>

<!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark">
    <!-- Control sidebar content goes here -->
</aside>
<!-- /.control-sidebar -->           

layout_footer.jsp 代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!-- Main Footer -->
<footer class="main-footer">
    <strong>Copyright &copy; 2019-2020 <a href="http://www.work100.net">光束雲</a>.</strong>
    All rights reserved.
    <div class="float-right d-none d-sm-inline-block">
        <b>Version</b> 1.0.0-beta
    </div>
</footer>           

5.3.重構 main.jsp

main.jsp

檔案的通用部分替換為我們提取出來的

includes

檔案,重構後的

main.jsp

檔案代碼如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>控制台 | IoT-Admin</title>
    <jsp:include page="includes/resources_head.jsp" />
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">

    <jsp:include page="includes/layout_header.jsp" />

    <jsp:include page="includes/layout_left.jsp" />

    <!-- Content Wrapper. Contains page content -->
    <div class="content-wrapper">
        <!-- Content Header (Page header) -->
        <div class="content-header">
            <div class="container-fluid">
                <div class="row mb-2">
                    <div class="col-sm-6">
                        <h1 class="m-0 text-dark">控制台</h1>
                    </div><!-- /.col -->
                    <div class="col-sm-6">
                        <ol class="breadcrumb float-sm-right">
                            <li class="breadcrumb-item"><a href="#">首頁</a></li>
                            <li class="breadcrumb-item active">控制台</li>
                        </ol>
                    </div><!-- /.col -->
                </div><!-- /.row -->
            </div><!-- /.container-fluid -->
        </div>
        <!-- /.content-header -->

        <!-- Main content -->
        <div class="content">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-lg-6">
                        <div class="card">
                            <div class="card-header border-0">
                                <div class="d-flex justify-content-between">
                                    <h3 class="card-title">圖表1</h3>
                                    <a href="javascript:void(0);">檢視</a>
                                </div>
                            </div>
                            <div class="card-body">
                                圖表1-内容
                            </div>
                        </div>
                        <!-- /.card -->

                        <div class="card">
                            <div class="card-header border-0">
                                <h3 class="card-title">表格1</h3>
                                <div class="card-tools">
                                    <a href="#" class="btn btn-tool btn-sm">
                                        <i class="fas fa-download"></i>
                                    </a>
                                    <a href="#" class="btn btn-tool btn-sm">
                                        <i class="fas fa-bars"></i>
                                    </a>
                                </div>
                            </div>
                            <div class="card-body">
                                表格1-内容
                            </div>
                        </div>
                        <!-- /.card -->
                    </div>
                    <!-- /.col-md-6 -->
                    <div class="col-lg-6">
                        <div class="card">
                            <div class="card-header border-0">
                                <div class="d-flex justify-content-between">
                                    <h3 class="card-title">圖表2</h3>
                                    <a href="javascript:void(0);">檢視</a>
                                </div>
                            </div>
                            <div class="card-body">
                                圖表2-内容
                            </div>
                        </div>
                        <!-- /.card -->

                        <div class="card">
                            <div class="card-header border-0">
                                <h3 class="card-title">表格2</h3>
                                <div class="card-tools">
                                    <a href="#" class="btn btn-sm btn-tool">
                                        <i class="fas fa-download"></i>
                                    </a>
                                    <a href="#" class="btn btn-sm btn-tool">
                                        <i class="fas fa-bars"></i>
                                    </a>
                                </div>
                            </div>
                            <div class="card-body">
                                表格2-内容
                            </div>
                        </div>
                    </div>
                    <!-- /.col-md-6 -->
                </div>
                <!-- /.row -->
            </div>
            <!-- /.container-fluid -->
        </div>
        <!-- /.content -->
    </div>
    <!-- /.content-wrapper -->

    <jsp:include page="includes/layout_footer.jsp" />
</div>
<!-- ./wrapper -->
<jsp:include page="includes/resources_body.jsp" />

</body>
</html>           

5.4.重構 auth/manager_list.jsp

将通用布局檔案包含到

auth/manager_list.jsp

檔案中,代碼如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>查詢清單 | 背景賬戶 | IoT-Admin</title>
    <jsp:include page="../includes/resources_head.jsp" />
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">

    <jsp:include page="../includes/layout_header.jsp" />

    <jsp:include page="../includes/layout_left.jsp" />

    <!-- Content Wrapper. Contains page content -->
    <div class="content-wrapper">
        <!-- Content Header (Page header) -->
        <div class="content-header">
            <div class="container-fluid">
                <div class="row mb-2">
                    <div class="col-sm-6">
                        <h1 class="m-0 text-dark">查詢清單</h1>
                    </div><!-- /.col -->
                    <div class="col-sm-6">
                        <ol class="breadcrumb float-sm-right">
                            <li class="breadcrumb-item"><a href="#">背景賬戶</a></li>
                            <li class="breadcrumb-item active">查詢清單</li>
                        </ol>
                    </div><!-- /.col -->
                </div><!-- /.row -->
            </div><!-- /.container-fluid -->
        </div>
        <!-- /.content-header -->

        <!-- Main content -->
        <div class="content">
            <div class="container-fluid">
                清單内容
            </div>
            <!-- /.container-fluid -->
        </div>
        <!-- /.content -->
    </div>
    <!-- /.content-wrapper -->

    <jsp:include page="../includes/layout_footer.jsp" />
</div>
<!-- ./wrapper -->
<jsp:include page="../includes/resources_body.jsp" />

</body>
</html>           

重構後的頁面效果如下圖:

Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include

6.執行個體源碼

執行個體源碼已經托管到如下位址:

上一篇:

首頁布局

- Java單體應用 - 免費課程 - 光束雲 - work100.net")

下一篇:

賬戶清單展示
如果對課程内容感興趣,可以掃碼關注我們的

公衆号

QQ群

,及時關注我們的課程更新
Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include
Java單體應用 - 項目實戰(背景) - 03.背景賬戶管理 - 01.使用include使用include