原文位址: http://www.work100.net/training/monolithic-project-iot-cloud-admin-manager.html 更多教程: 光束雲 - 免費課程
使用include
序号 | 文内章節 | 視訊 |
---|---|---|
1 | 功能子產品細分 | - |
2 | 建立ManagerController控制器 | |
3 | 建立manager_list.jsp頁面 | |
4 | 運作并檢視效果 | |
5 | 通過include引入公用檔案 | |
6 | 執行個體源碼 |
請參照如上
章節導航
進行閱讀
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
登入後,點選菜單
背景賬戶 - 查新清單
,界面如下圖:

5.通過include引入公用檔案
5.1.通用布局
參照我們的
首頁布局
,可見界面布局上有一些通用部分,如下圖:
其中紅色區域為每個頁面都包含的,藍色區域為每個頁面特有的。
既然每個頁面都包含紅色區域的
通用部分
,那麼我們就需要将其提取出來,這裡将使用
<jsp:include >
來實作。
5.2.提取通用布局到檔案
views
檔案夾下新增一個
includes
檔案夾,然後提取下表的通用内容為檔案,并存儲到
includes
下:
檔案位置 | 作用 |
---|---|
includes/resources_head.jsp | 在頁面 标簽中引入 |
includes/resources_body.jsp | |
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 © 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>
重構後的頁面效果如下圖:
6.執行個體源碼
執行個體源碼已經托管到如下位址:
- https://github.com/work100-net/training-stage2/tree/master/iot-cloud3 https://github.com/work100-net/training-stage2/tree/master/iot-cloud3
- https://gitee.com/work100-net/training-stage2/tree/master/iot-cloud3 https://gitee.com/work100-net/training-stage2/tree/master/iot-cloud3
上一篇:
首頁布局- Java單體應用 - 免費課程 - 光束雲 - work100.net")
下一篇:
賬戶清單展示如果對課程内容感興趣,可以掃碼關注我們的或
公衆号
,及時關注我們的課程更新
QQ群