You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/11/21 21:55:45 UTC

hbase git commit: HBASE-19291 Use common header and footer for JSP pages

Repository: hbase
Updated Branches:
  refs/heads/master 984e0ecfc -> 3b2b22b5f


HBASE-19291 Use common header and footer for JSP pages

Use header and footer in our *.jsp pages to avoid unnecessary redundancy (copy-paste of code)

Misc edits:
- Due to redundancy, new additions make it to some places but not others. For eg there are missing links to "/logLevel", "/processRS.jsp" in few places.
- Fix processMaster.jsp wrongly pointing to rs-status instead of master-status (probably due to copy paste from processRS.jsp)
- Deleted a bunch of extraneous "</a>" in processMaster.jsp & processRS.jsp
- Added missing </div> tag in snapshot.jsp
- Deleted fossils of html5shiv.js. It's uses and the js itself were deleted in the commit "819aed4ccd073d818bfef5931ec8d248bfae5f1f"
- Fixed wrongly matched heading tags
- Deleted some unused variables

Tested:
Ran standalone cluster and opened each page to make sure it looked right.

Sidenote:
Looks like HBASE-3835 started the work of converting from jsp to jamon, but the work didn't finish. Now we have a mix of jsp and jamon. Needs reconciling, but later.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3b2b22b5
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3b2b22b5
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3b2b22b5

Branch: refs/heads/master
Commit: 3b2b22b5fac1175302b320b7ca1ed766326924cc
Parents: 984e0ec
Author: Apekshit <ap...@gmail.com>
Authored: Fri Apr 8 00:50:33 2016 -0700
Committer: Apekshit Sharma <ap...@apache.org>
Committed: Tue Nov 21 13:52:32 2017 -0800

----------------------------------------------------------------------
 .../resources/hbase-webapps/master/footer.jsp   | 24 ++++++
 .../resources/hbase-webapps/master/header.jsp   | 67 +++++++++++++++
 .../hbase-webapps/master/procedures.jsp         | 63 +++------------
 .../hbase-webapps/master/processMaster.jsp      | 85 +++++---------------
 .../resources/hbase-webapps/master/snapshot.jsp | 77 ++++--------------
 .../hbase-webapps/master/snapshotsStats.jsp     | 52 ++----------
 .../resources/hbase-webapps/master/table.jsp    | 72 +++--------------
 .../hbase-webapps/master/tablesDetailed.jsp     | 61 ++------------
 .../main/resources/hbase-webapps/master/zk.jsp  | 60 ++------------
 .../hbase-webapps/regionserver/footer.jsp       | 24 ++++++
 .../hbase-webapps/regionserver/header.jsp       | 65 +++++++++++++++
 .../hbase-webapps/regionserver/processRS.jsp    | 84 +++++--------------
 .../hbase-webapps/regionserver/region.jsp       | 62 ++------------
 .../hbase-webapps/regionserver/storeFile.jsp    | 55 ++-----------
 14 files changed, 288 insertions(+), 563 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp
new file mode 100644
index 0000000..0aed242
--- /dev/null
+++ b/hbase-server/src/main/resources/hbase-webapps/master/footer.jsp
@@ -0,0 +1,24 @@
+<%--
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+--%>
+    <script src="/static/js/jquery.min.js" type="text/javascript"></script>
+    <script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
+    <script src="/static/js/tab.js" type="text/javascript"></script>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/header.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/header.jsp b/hbase-server/src/main/resources/hbase-webapps/master/header.jsp
new file mode 100644
index 0000000..c7cbf3e
--- /dev/null
+++ b/hbase-server/src/main/resources/hbase-webapps/master/header.jsp
@@ -0,0 +1,67 @@
+<%--
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+--%>
+<%@ page contentType="text/html;charset=UTF-8"
+  import="org.apache.hadoop.hbase.HBaseConfiguration"
+%>
+<!DOCTYPE html>
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="utf-8">
+    <title><%= request.getParameter("pageTitle")%></title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
+    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
+    <link href="/static/css/hbase.css" rel="stylesheet">
+  </head>
+  <body>
+    <div class="navbar  navbar-fixed-top navbar-default">
+      <div class="container-fluid">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse"
+                  data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/master-status">
+            <img src="/static/hbase_logo_small.png" alt="HBase Logo"/>
+          </a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+            <li><a href="/master-status">Home</a></li>
+            <li><a href="/tablesDetailed.jsp">Table Details</a></li>
+            <li><a href="/procedures.jsp">Procedures</a></li>
+            <li><a href="/processMaster.jsp">Process Metrics</a></li>
+            <li><a href="/logs/">Local Logs</a></li>
+            <li><a href="/logLevel">Log Level</a></li>
+            <li><a href="/dump">Debug Dump</a></li>
+            <li><a href="/jmx">Metrics Dump</a></li>
+            <% if (HBaseConfiguration.isShowConfInServlet()) { %>
+            <li><a href="/conf">HBase Configuration</a></li>
+            <% } %>
+          </ul>
+        </div><!--/.nav-collapse -->
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp b/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
index c3df296..4e546cd 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
@@ -25,24 +25,19 @@
   import="java.util.Date"
   import="java.util.List"
   import="java.util.Set"
-  import="org.apache.hadoop.conf.Configuration"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
   import="org.apache.hadoop.hbase.master.HMaster"
   import="org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv"
   import="org.apache.hadoop.hbase.master.procedure.ProcedureDescriber"
   import="org.apache.hadoop.hbase.procedure2.LockedResource"
   import="org.apache.hadoop.hbase.procedure2.Procedure"
   import="org.apache.hadoop.hbase.procedure2.ProcedureExecutor"
-  import="org.apache.hadoop.hbase.procedure2.ProcedureUtil"
   import="org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile"
   import="org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore"
   import="org.apache.hadoop.hbase.procedure2.util.StringUtils"
-  import="org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos"
-  import="org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil"
   import="org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix"
 %>
 <%
-  HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
+  HMaster master = (HMaster) getServletContext().getAttribute(HMaster.MASTER);
   ProcedureExecutor<MasterProcedureEnv> procExecutor = master.getMasterProcedureExecutor();
   WALProcedureStore walStore = master.getWalProcedureStore();
 
@@ -62,49 +57,12 @@
   });
 
   List<LockedResource> lockedResources = master.getLocks();
+  pageContext.setAttribute("pageTitle", "HBase Master Procedures: " + master.getServerName());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="utf-8" />
-    <title>HBase Master Procedures: <%= master.getServerName() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="" />
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
-    <link href="/static/css/bootstrap.min.css" rel="stylesheet" />
-    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet" />
-    <link href="/static/css/hbase.css" rel="stylesheet" />
-  </head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-                <li><a href="/master-status">Home</a></li>
-                <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/logLevel">Log Level</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
 <div class="container-fluid content">
   <div class="row">
       <div class="page-header">
@@ -271,19 +229,16 @@
 
       if (!waitingProcedures.isEmpty()) {
     %>
-	    <h3>Waiting procedures</h3>
-	    <table class="table table-striped" width="90%" >
+        <h3>Waiting procedures</h3>
+        <table class="table table-striped" width="90%" >
         <% for (Procedure<?> proc : procedures) { %>
          <tr>
             <td><%= escapeXml(ProcedureDescriber.describe(proc)) %></td>
           </tr>
         <% } %>
-	    </table>
+        </table>
     <% } %>
   <% } %>
 </div>
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
 
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/processMaster.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/processMaster.jsp b/hbase-server/src/main/resources/hbase-webapps/master/processMaster.jsp
index 75da38a..39ac83c 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/processMaster.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/processMaster.jsp
@@ -20,8 +20,6 @@
 <%@ page contentType="text/html;charset=UTF-8"
   import="java.util.Date"
   import="java.util.List"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
-  import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
   import="javax.management.ObjectName"
   import="java.lang.management.ManagementFactory"
   import="java.lang.management.MemoryPoolMXBean"
@@ -30,7 +28,6 @@
   import="org.apache.hadoop.hbase.util.JSONMetricUtil"
   import="org.apache.hadoop.hbase.procedure2.util.StringUtils"
   import="org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix"
-  import="com.fasterxml.jackson.databind.JsonNode"
 %>
 <%
 RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
@@ -45,49 +42,12 @@ collector1 = gcBeans.get(0);
 collector2 = gcBeans.get(1);
 } catch(IndexOutOfBoundsException e) {}
 List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
+pageContext.setAttribute("pageTitle", "Process info for PID: " + JSONMetricUtil.getProcessPID());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="utf-8">
-    <title>Process info for PID: <%= JSONMetricUtil.getProcessPID() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
-    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-    <link href="/static/css/hbase.css" rel="stylesheet">
-</head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/rs-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-            <li><a href="/master-status">Home</a></li>
-                <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                <li><a href="/procedures.jsp">Procedures</a></li>
-                <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/logLevel">Log Level</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
 <div class="container-fluid content">
   <div class="row">
       <div class="page-header">
@@ -103,10 +63,10 @@ List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
     </tr>
     <tr>
       <tr>
-        <td><%= new Date(runtimeBean.getStartTime()) %></a></td>
-        <td><%= StringUtils.humanTimeDiff(runtimeBean.getUptime()) %></a></td>
-        <td><%= JSONMetricUtil.getProcessPID() %></a></td>
-        <td><%= runtimeBean.getSystemProperties().get("user.name") %></a></td>
+        <td><%= new Date(runtimeBean.getStartTime()) %></td>
+        <td><%= StringUtils.humanTimeDiff(runtimeBean.getUptime()) %></td>
+        <td><%= JSONMetricUtil.getProcessPID() %></td>
+        <td><%= runtimeBean.getSystemProperties().get("user.name") %></td>
       </tr>
   </table>
 </div>
@@ -126,12 +86,12 @@ List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
         <th>ThreadsTerminated</th>
     </tr>
      <tr>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsNew")  %></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsRunnable")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsBlocked")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsWaiting")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTimedWaiting")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTerminated")%></a></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsNew")  %></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsRunnable")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsBlocked")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsWaiting")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTimedWaiting")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTerminated")%></td>
      </tr>
   </table>
 </div>
@@ -208,20 +168,15 @@ if(mp.getName().contains("Cache")) continue;%>
     </tr>
     <tr>
       <tr>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getCommitted(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getInit(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getMax(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getUsed(), "B", 1) %></a></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getCommitted(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getInit(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getMax(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getUsed(), "B", 1) %></td>
         <td><%= JSONMetricUtil.calcPercentage(mp.getUsage().getUsed(),
-          mp.getUsage().getCommitted()) %></a></td>
+          mp.getUsage().getCommitted()) %></td>
       </tr>
   </table>
 </div>
 <% } %>
 
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
-<script src="/static/js/tab.js" type="text/javascript"></script>
-
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
index 1733613..b0cfe87 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshot.jsp
@@ -26,7 +26,7 @@
   import="org.apache.hadoop.hbase.snapshot.SnapshotInfo"
   import="org.apache.hadoop.util.StringUtils"
   import="org.apache.hadoop.hbase.TableName"
-  import="org.apache.hadoop.hbase.HBaseConfiguration" %>
+%>
 <%
   HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
   Configuration conf = master.getConfiguration();
@@ -51,64 +51,22 @@
   }
 
   String action = request.getParameter("action");
-  String cloneName = request.getParameter("cloneName");
   boolean isActionResultPage = (!readOnly && action != null);
+  String pageTitle;
+  if (isActionResultPage) {
+    pageTitle = "HBase Master: " + master.getServerName();
+  } else {
+    pageTitle = "Snapshot: " + snapshotName;
+  }
+  pageContext.setAttribute("pageTitle", pageTitle);
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="utf-8">
-    <% if (isActionResultPage) { %>
-      <title>HBase Master: <%= master.getServerName() %></title>
-    <% } else { %>
-      <title>Snapshot: <%= snapshotName %></title>
-    <% } %>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
 
-    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-    <link href="/static/css/hbase.css" rel="stylesheet">
-    <% if (isActionResultPage) { %>
-    <script type="text/javascript">
-    <!--
-        setTimeout("history.back()",5000);
-    -->
-    </script>
-    <% } %>
-  </head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-                <li><a href="/master-status">Home</a></li>
-                <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/logLevel">Log Level</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
+<jsp:include page="header.jsp">
+  <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
+
+<div class="container-fluid content">
 <% if (snapshot == null) { %>
-  <div class="container-fluid content">
   <div class="row inner_header">
     <div class="page-header">
       <h1>Snapshot "<%= snapshotName %>" does not exist</h1>
@@ -116,7 +74,6 @@
   </div>
   <p>Go <a href="javascript:history.back()">Back</a>, or wait for the redirect.
 <% } else { %>
-  <div class="container-fluid content">
   <div class="row">
       <div class="page-header">
           <h1>Snapshot: <%= snapshotName %></h1>
@@ -178,10 +135,6 @@
 <%
   } // end else
 %>
+</div>
 
-
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
-
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
index cf022c3..719ab4f 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
@@ -24,7 +24,6 @@
   import="java.util.Map"
   import="org.apache.hadoop.conf.Configuration"
   import="org.apache.hadoop.fs.Path"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
   import="org.apache.hadoop.hbase.master.HMaster"
   import="org.apache.hadoop.hbase.snapshot.SnapshotInfo"
   import="org.apache.hadoop.hbase.TableName"
@@ -50,48 +49,11 @@
                    totalArchivedSize, totalSharedSize, totalMobSize);
     totalSize = totalSharedSize.get() + totalArchivedSize.get() + totalMobSize.get();
   }
+  pageContext.setAttribute("pageTitle", "HBase Master Snapshots: " + master.getServerName());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="utf-8">
-    <title>HBase Master Snapshots: <%= master.getServerName() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-    <link href="/static/css/hbase.css" rel="stylesheet">
-  </head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-                <li><a href="/master-status">Home</a></li>
-                <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/logLevel">Log Level</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 <div class="container-fluid content">
   <div class="row">
       <div class="page-header">
@@ -141,8 +103,4 @@
   </table>
 </div>
 
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
-
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
index ef37f79..c8ca50b 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
@@ -30,7 +30,6 @@
   import="java.util.TreeMap"
   import="org.apache.commons.lang3.StringEscapeUtils"
   import="org.apache.hadoop.conf.Configuration"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
   import="org.apache.hadoop.hbase.HColumnDescriptor"
   import="org.apache.hadoop.hbase.HConstants"
   import="org.apache.hadoop.hbase.HRegionLocation"
@@ -118,65 +117,19 @@
   }
   int numRegions = 0;
 
+  String pageTitle;
+  if ( !readOnly && action != null ) {
+      pageTitle = "HBase Master: " + StringEscapeUtils.escapeHtml4(master.getServerName().toString());
+  } else {
+      pageTitle = "Table: " + escaped_fqtn;
+  }
+  pageContext.setAttribute("pageTitle", pageTitle);
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta charset="utf-8">
-    <% if ( !readOnly && action != null ) { %>
-        <title>HBase Master: <%= StringEscapeUtils.escapeHtml4(master.getServerName().toString()) %></title>
-    <% } else { %>
-        <title>Table: <%= escaped_fqtn %></title>
-    <% } %>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
 
+<jsp:include page="header.jsp">
+  <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
-      <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-      <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-      <link href="/static/css/hbase.css" rel="stylesheet">
-      <% if ( ( !readOnly && action != null ) || fqtn == null ) { %>
-	  <script type="text/javascript">
-      <!--
-		  setTimeout("history.back()",5000);
-	  -->
-	  </script>
-      <% } else { %>
-      <!--[if lt IE 9]>
-          <script src="/static/js/html5shiv.js"></script>
-      <![endif]-->
-      <% } %>
-</head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-                <li><a href="/master-status">Home</a></li>
-                <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/logLevel">Log Level</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
 <%
 if ( fqtn != null ) {
   try {
@@ -889,11 +842,8 @@ Actions:
 <p>Go <a href="javascript:history.back()">Back</a>, or wait for the redirect.
 </div>
 <% } %>
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
 
-</body>
-</html>
+<jsp:include page="footer.jsp" />
 
 <script>
 var index=0;

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp b/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
index 195fbbe..9201748 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/tablesDetailed.jsp
@@ -19,64 +19,18 @@
 --%>
 <%@ page contentType="text/html;charset=UTF-8"
   import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
-  import="org.apache.hadoop.conf.Configuration"
   import="org.apache.hadoop.hbase.master.HMaster"
   import="org.apache.hadoop.hbase.client.Admin"
   import="org.apache.hadoop.hbase.client.Connection"
-  import="org.apache.hadoop.hbase.client.ConnectionFactory"
   import="org.apache.hadoop.hbase.HTableDescriptor"
-  import="org.apache.hadoop.hbase.HBaseConfiguration" %>
+%>
 <%
   HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
-  Configuration conf = master.getConfiguration();
+  pageContext.setAttribute("pageTitle", "HBase Master: " + master.getServerName());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>HBase Master: <%= master.getServerName() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-
-      <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-      <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-      <link href="/static/css/hbase.css" rel="stylesheet">
-  </head>
-
-  <body>
-
-  <div class="navbar  navbar-fixed-top navbar-default">
-      <div class="container-fluid">
-          <div class="navbar-header">
-              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-              </button>
-              <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-          </div>
-          <div class="collapse navbar-collapse">
-              <ul class="nav navbar-nav">
-                  <li class="active"><a href="/master-status">Home</a></li>
-                  <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                  <%if (master.isActiveMaster()) { %>
-                  <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                  <% } %>
-                  <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                  <li><a href="/logs/">Local Logs</a></li>
-                  <li><a href="/logLevel">Log Level</a></li>
-                  <li><a href="/dump">Debug Dump</a></li>
-                  <li><a href="/jmx">Metrics Dump</a></li>
-                  <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                  <li><a href="/conf">HBase Configuration</a></li>
-                  <% } %>
-              </ul>
-          </div><!--/.nav-collapse -->
-      </div>
-  </div>
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
   <div class="container-fluid content">
     <div class="row inner_header">
@@ -110,8 +64,5 @@
 </table>
 <% } %>
 </div>
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
 
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp b/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
index 1951617..742dd51 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/zk.jsp
@@ -21,57 +21,15 @@
   import="org.apache.commons.lang3.StringEscapeUtils"
   import="org.apache.hadoop.hbase.zookeeper.ZKUtil"
   import="org.apache.hadoop.hbase.zookeeper.ZKWatcher"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
-  import="org.apache.hadoop.hbase.master.HMaster"%><%
+  import="org.apache.hadoop.hbase.master.HMaster"
+%>
+<%
   HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
   ZKWatcher watcher = master.getZooKeeper();
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<!-- Dont put a doctype jetty doesnt serve the css/js out correctly so we need quirks mode on -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta charset="utf-8">
-    <title>ZooKeeper Dump</title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-
-  <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-  <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-  <link href="/static/css/hbase.css" rel="stylesheet">
-</head>
-    <body>
-
-        <div class="navbar  navbar-fixed-top navbar-default">
-            <div class="container-fluid">
-                <div class="navbar-header">
-                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                        <span class="icon-bar"></span>
-                        <span class="icon-bar"></span>
-                        <span class="icon-bar"></span>
-                    </button>
-                    <a class="navbar-brand" href="/master-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-                </div>
-                <div class="collapse navbar-collapse">
-                    <ul class="nav navbar-nav">
-                        <li><a href="/master-status">Home</a></li>
-                        <li><a href="/tablesDetailed.jsp">Table Details</a></li>
-                        <li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
-                        <li><a href="/processMaster.jsp">Process Metrics</a></li>
-                        <li><a href="/logs/">Local Logs</a></li>
-                        <li><a href="/logLevel">Log Level</a></li>
-                        <li><a href="/dump">Debug Dump</a></li>
-                        <li><a href="/jmx">Metrics Dump</a></li>
-                        <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                        <li><a href="/conf">HBase Configuration</a></li>
-                        <% } %>
-                    </ul>
-                </div><!--/.nav-collapse -->
-            </div>
-        </div>
-
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="Zookeeper Dump"/>
+</jsp:include>
         <div class="container-fluid content">
             <div class="row inner_header">
                 <div class="page-header">
@@ -84,8 +42,4 @@
                 </div>
             </div>
         </div>
-     <script src="/static/js/jquery.min.js" type="text/javascript"></script>
-     <script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
-
-    </body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp
new file mode 100644
index 0000000..0aed242
--- /dev/null
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/footer.jsp
@@ -0,0 +1,24 @@
+<%--
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+--%>
+    <script src="/static/js/jquery.min.js" type="text/javascript"></script>
+    <script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
+    <script src="/static/js/tab.js" type="text/javascript"></script>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/regionserver/header.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/header.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/header.jsp
new file mode 100644
index 0000000..dcec0a1
--- /dev/null
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/header.jsp
@@ -0,0 +1,65 @@
+<%--
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+--%>
+<%@ page contentType="text/html;charset=UTF-8"
+  import="org.apache.hadoop.hbase.HBaseConfiguration"
+%>
+<!DOCTYPE html>
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta charset="utf-8">
+    <title><%= request.getParameter("pageTitle")%></title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
+    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
+    <link href="/static/css/hbase.css" rel="stylesheet">
+  </head>
+  <body>
+    <div class="navbar  navbar-fixed-top navbar-default">
+      <div class="container-fluid">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse"
+                  data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="/rs-status">
+            <img src="/static/hbase_logo_small.png" alt="HBase Logo"/>
+          </a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+            <li><a href="/rs-status">Home</a></li>
+            <li><a href="/processRS.jsp">Process Metrics</a></li>
+            <li><a href="/logs/">Local Logs</a></li>
+            <li><a href="/logLevel">Log Level</a></li>
+            <li><a href="/dump">Debug Dump</a></li>
+            <li><a href="/jmx">Metrics Dump</a></li>
+            <% if (HBaseConfiguration.isShowConfInServlet()) { %>
+            <li><a href="/conf">HBase Configuration</a></li>
+            <% } %>
+          </ul>
+        </div><!--/.nav-collapse -->
+      </div>
+    </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/regionserver/processRS.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/processRS.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/processRS.jsp
index 5c224ab..f22358a 100644
--- a/hbase-server/src/main/resources/hbase-webapps/regionserver/processRS.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/processRS.jsp
@@ -20,8 +20,6 @@
 <%@ page contentType="text/html;charset=UTF-8"
   import="java.util.Date"
   import="java.util.List"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
-  import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
   import="javax.management.ObjectName"
   import="java.lang.management.ManagementFactory"
   import="java.lang.management.MemoryPoolMXBean"
@@ -30,7 +28,6 @@
   import="org.apache.hadoop.hbase.util.JSONMetricUtil"
   import="org.apache.hadoop.hbase.procedure2.util.StringUtils"
   import="org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix"
-  import="com.fasterxml.jackson.databind.JsonNode"
 %>
 <%
 RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
@@ -46,46 +43,12 @@ collector1 = gcBeans.get(0);
 collector2 = gcBeans.get(1);
 } catch(IndexOutOfBoundsException e) {}
 List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
+pageContext.setAttribute("pageTitle", "Process info for PID: " + JSONMetricUtil.getProcessPID());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <meta charset="utf-8">
-    <title>Process info for PID: <%= JSONMetricUtil.getProcessPID() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
+<jsp:include page="header.jsp">
+    <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
-    <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-    <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-    <link href="/static/css/hbase.css" rel="stylesheet">
-</head>
-<body>
-<div class="navbar  navbar-fixed-top navbar-default">
-    <div class="container-fluid">
-        <div class="navbar-header">
-            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-                <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/rs-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav">
-                <li><a href="/rs-status">Home</a></li>
-                <li><a href="/processRS.jsp">Process Metrics</a></li>
-                <li><a href="/logs/">Local Logs</a></li>
-                <li><a href="/dump">Debug Dump</a></li>
-                <li><a href="/jmx">Metrics Dump</a></li>
-                <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                <li><a href="/conf">HBase Configuration</a></li>
-                <% } %>
-            </ul>
-        </div><!--/.nav-collapse -->
-    </div>
-</div>
 <div class="container-fluid content">
   <div class="row">
       <div class="page-header">
@@ -102,12 +65,12 @@ List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
     </tr>
     <tr>
       <tr>
-        <td><%= new Date(runtimeBean.getStartTime()) %></a></td>
-        <td><%= StringUtils.humanTimeDiff(runtimeBean.getUptime()) %></a></td>
-        <td><%= JSONMetricUtil.getProcessPID() %></a></td>
+        <td><%= new Date(runtimeBean.getStartTime()) %></td>
+        <td><%= StringUtils.humanTimeDiff(runtimeBean.getUptime()) %></td>
+        <td><%= JSONMetricUtil.getProcessPID() %></td>
         <td><%= (long)JSONMetricUtil.getValueFromMBean(rsMetrics, "pauseWarnThresholdExceeded")
-          + (long)JSONMetricUtil.getValueFromMBean(rsMetrics, "pauseInfoThresholdExceeded") %></a></td>
-        <td><%= runtimeBean.getSystemProperties().get("user.name") %></a></td>
+          + (long)JSONMetricUtil.getValueFromMBean(rsMetrics, "pauseInfoThresholdExceeded") %></td>
+        <td><%= runtimeBean.getSystemProperties().get("user.name") %></td>
       </tr>
   </table>
 </div>
@@ -128,12 +91,12 @@ List<MemoryPoolMXBean> mPools = JSONMetricUtil.getMemoryPools();
     </tr>
     <tr>
       <tr>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsNew")  %></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsRunnable")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsBlocked")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsWaiting")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTimedWaiting")%></a></td>
-        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTerminated")%></a></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsNew")  %></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsRunnable")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsBlocked")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsWaiting")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTimedWaiting")%></td>
+        <td><%= JSONMetricUtil.getValueFromMBean(jvmMetrics, "ThreadsTerminated")%></td>
       </tr>
   </table>
 </div>
@@ -210,20 +173,15 @@ if(mp.getName().contains("Cache")) continue;%>
     </tr>
     <tr>
       <tr>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getCommitted(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getInit(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getMax(), "B", 1) %></a></td>
-        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getUsed(), "B", 1) %></a></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getCommitted(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getInit(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getMax(), "B", 1) %></td>
+        <td><%= TraditionalBinaryPrefix.long2String(mp.getUsage().getUsed(), "B", 1) %></td>
         <td><%= JSONMetricUtil.calcPercentage(mp.getUsage().getUsed(),
-          mp.getUsage().getCommitted()) %></a></td>
+          mp.getUsage().getCommitted()) %></td>
       </tr>
   </table>
 </div>
 <% } %>
 
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
-<script src="/static/js/tab.js" type="text/javascript"></script>
-
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
index 62c589b..e2ea88f 100644
--- a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp
@@ -21,9 +21,6 @@
   import="java.util.Collection"
   import="java.util.Date"
   import="java.util.List"
-  import="static org.apache.commons.lang3.StringEscapeUtils.escapeXml"
-  import="org.apache.hadoop.conf.Configuration"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
   import="org.apache.hadoop.hbase.client.RegionInfoDisplay"
   import="org.apache.hadoop.hbase.regionserver.HRegionServer"
   import="org.apache.hadoop.hbase.regionserver.Region"
@@ -33,55 +30,15 @@
 <%
   String regionName = request.getParameter("name");
   HRegionServer rs = (HRegionServer) getServletContext().getAttribute(HRegionServer.REGIONSERVER);
-  Configuration conf = rs.getConfiguration();
 
   Region region = rs.getRegion(regionName);
   String displayName = RegionInfoDisplay.getRegionNameAsStringForDisplay(region.getRegionInfo(),
     rs.getConfiguration());
+  pageContext.setAttribute("pageTitle", "HBase RegionServer: " + rs.getServerName());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>HBase RegionServer: <%= rs.getServerName() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-
-      <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-      <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-      <link href="/static/css/hbase.css" rel="stylesheet">
-  </head>
-
-  <body>
-
-  <div class="navbar  navbar-fixed-top navbar-default">
-      <div class="container-fluid">
-          <div class="navbar-header">
-              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-              </button>
-              <a class="navbar-brand" href="/rs-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-          </div>
-          <div class="collapse navbar-collapse">
-              <ul class="nav navbar-nav">
-                  <li class="active"><a href="/rs-status">Home</a></li>
-                  <li><a href="/processRS.jsp">Process Metrics</a></li>
-                  <li><a href="/logs/">Local Logs</a></li>
-                  <li><a href="/logLevel">Log Level</a></li>
-                  <li><a href="/dump">Debug Dump</a></li>
-                  <li><a href="/jmx">Metrics Dump</a></li>
-                  <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                  <li><a href="/conf">HBase Configuration</a></li>
-                  <% } %>
-              </ul>
-          </div><!--/.nav-collapse -->
-      </div>
-  </div>
+<jsp:include page="header.jsp">
+  <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
   <div class="container-fluid content">
     <div class="row inner_header">
@@ -96,11 +53,11 @@
        String cf = store.getColumnFamilyName();
        Collection<? extends StoreFile> storeFiles = store.getStorefiles(); %>
 
-       <h3>Column Family: <%= cf %></h2>
+       <h3>Column Family: <%= cf %></h3>
 
-       <h4>Memstore size (MB): <%= (int) (store.getMemStoreSize().getHeapSize() / 1024 / 1024) %></h3>
+       <h4>Memstore size (MB): <%= (int) (store.getMemStoreSize().getHeapSize() / 1024 / 1024) %></h4>
 
-       <h4>Store Files</h3>
+       <h4>Store Files</h4>
 
        <table class="table table-striped">
          <tr>
@@ -121,8 +78,5 @@
    <%  }
    }%>
 </div>
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
 
-</body>
-</html>
+<jsp:include page="footer.jsp" />

http://git-wip-us.apache.org/repos/asf/hbase/blob/3b2b22b5/hbase-server/src/main/resources/hbase-webapps/regionserver/storeFile.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/storeFile.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/storeFile.jsp
index 5997e24..0def4e4 100644
--- a/hbase-server/src/main/resources/hbase-webapps/regionserver/storeFile.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/storeFile.jsp
@@ -22,58 +22,18 @@
   import="java.io.PrintStream"
   import="org.apache.hadoop.conf.Configuration"
   import="org.apache.hadoop.fs.Path"
-  import="org.apache.hadoop.hbase.HBaseConfiguration"
   import="org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter"
   import="org.apache.hadoop.hbase.regionserver.HRegionServer"
-  import="org.apache.hadoop.hbase.regionserver.StoreFile"
-  %>
+%>
 <%
   String storeFile = request.getParameter("name");
   HRegionServer rs = (HRegionServer) getServletContext().getAttribute(HRegionServer.REGIONSERVER);
   Configuration conf = rs.getConfiguration();
+  pageContext.setAttribute("pageTitle", "HBase RegionServer: " + rs.getServerName());
 %>
-<!DOCTYPE html>
-<?xml version="1.0" encoding="UTF-8" ?>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <title>HBase RegionServer: <%= rs.getServerName() %></title>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-
-      <link href="/static/css/bootstrap.min.css" rel="stylesheet">
-      <link href="/static/css/bootstrap-theme.min.css" rel="stylesheet">
-      <link href="/static/css/hbase.css" rel="stylesheet">
-  </head>
-
-  <body>
-
-  <div class="navbar  navbar-fixed-top navbar-default">
-      <div class="container-fluid">
-          <div class="navbar-header">
-              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-                  <span class="icon-bar"></span>
-              </button>
-              <a class="navbar-brand" href="/rs-status"><img src="/static/hbase_logo_small.png" alt="HBase Logo"/></a>
-          </div>
-          <div class="collapse navbar-collapse">
-              <ul class="nav navbar-nav">
-                  <li class="active"><a href="/rs-status">Home</a></li>
-                  <li><a href="/logs/">Local Logs</a></li>
-                  <li><a href="/logLevel">Log Level</a></li>
-                  <li><a href="/dump">Debug Dump</a></li>
-                  <li><a href="/jmx">Metrics Dump</a></li>
-                  <% if (HBaseConfiguration.isShowConfInServlet()) { %>
-                  <li><a href="/conf">HBase Configuration</a></li>
-                  <% } %>
-              </ul>
-          </div><!--/.nav-collapse -->
-      </div>
-  </div>
+<jsp:include page="header.jsp">
+  <jsp:param name="pageTitle" value="${pageTitle}"/>
+</jsp:include>
 
   <div class="container-fluid content">
     <div class="row inner_header">
@@ -103,8 +63,5 @@
 %>
   </pre>
 </div>
-<script src="/static/js/jquery.min.js" type="text/javascript"></script>
-<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
 
-</body>
-</html>
+<jsp:include page="footer.jsp" />