diff --git a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java index 33a9ab20a5..a97e9f6258 100644 --- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java +++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java @@ -4,23 +4,15 @@ import com.alibaba.druid.util.IpUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.List; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.alibaba.druid.sql.SQLUtils; -import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.visitor.SchemaStatVisitor; import com.alibaba.druid.stat.DruidStatManagerFacade; import com.alibaba.druid.support.JSONDruidStatService; import com.alibaba.druid.util.IOUtils; -import com.alibaba.druid.util.StringUtils; /** * 注意:避免直接调用Druid相关对象例如DruidDataSource等,相关调用要到DruidStatManagerFacade里用反射实现 @@ -112,52 +104,12 @@ public class StatViewServlet extends HttpServlet { response.getWriter().print(jsonDruidStatService.service(fullUrl)); return; } - - if (path.startsWith("/connectionInfo-") && path.endsWith(".html")) { - Integer id = StringUtils.subStringToInteger(path, "connectionInfo-", "."); - returnViewConnectionInfo(id, request, response); - return; - } - - if (path.startsWith("/activeConnectionStackTrace-") && path.endsWith(".html")) { - Integer id = StringUtils.subStringToInteger(path, "activeConnectionStackTrace-", "."); - returnViewActiveConnectionStackTrace(id, request, response); - return; - } - - if (path.startsWith("/sql-") && path.endsWith(".html")) { - Integer id = StringUtils.subStringToInteger(path, "sql-", "."); - returnViewSqlStat(id, request,response); - return; - } - + // find file in resources path returnResourceFile(path, uri, response); } - private void returnViewActiveConnectionStackTrace(Integer id, HttpServletRequest request, - HttpServletResponse response) throws IOException { - - String text = IOUtils.readFromResource(RESOURCE_PATH + "/activeConnectionStackTrace.html"); - text = text.replaceAll("\\{datasourceId\\}", id.toString()); - response.getWriter().print(text); - } - - private void returnViewConnectionInfo(Integer id, HttpServletRequest request, HttpServletResponse response) - throws IOException { - String text = IOUtils.readFromResource(RESOURCE_PATH + "/connectionInfo.html"); - text = text.replaceAll("\\{datasourceId\\}", id.toString()); - response.getWriter().print(text); - } - - private void returnViewSqlStat(Integer id, HttpServletRequest request, HttpServletResponse response) throws IOException { - String text = IOUtils.readFromResource(RESOURCE_PATH + "/sqlDetail.html"); - text = text.replaceAll("\\{sqlId\\}", id.toString()); - response.getWriter().print(text); - } - - private void returnResourceFile(String fileName, String uri, HttpServletResponse response) throws ServletException, IOException { String text = IOUtils.readFromResource(RESOURCE_PATH + fileName); if(text == null) { diff --git a/src/main/resources/support/http/resources/connectionInfo.html b/src/main/resources/support/http/resources/connectionInfo.html index 2ecc1fae60..1be8995935 100644 --- a/src/main/resources/support/http/resources/connectionInfo.html +++ b/src/main/resources/support/http/resources/connectionInfo.html @@ -8,8 +8,8 @@ @@ -49,4 +49,4 @@ - \ No newline at end of file + diff --git a/src/main/resources/support/http/resources/js/activeConnectionStackTrace.js b/src/main/resources/support/http/resources/js/activeConnectionStackTrace.js index 0b813d2349..077222d13b 100644 --- a/src/main/resources/support/http/resources/js/activeConnectionStackTrace.js +++ b/src/main/resources/support/http/resources/js/activeConnectionStackTrace.js @@ -1,4 +1,5 @@ -function ajaxRequestForActiveConnectionStackTrace(datasourceId) { +function ajaxRequestForActiveConnectionStackTrace() { + var datasourceId = getUrlVar("datasourceId"); var xmlHttpForActiveConnectionStackTrace=getRequestObject(); sendRequest(xmlHttpForActiveConnectionStackTrace,'activeConnectionStackTrace-' + datasourceId + '.json', function() { ajaxResponseForActiveConnectionStackTrace(xmlHttpForActiveConnectionStackTrace, datasourceId); @@ -20,4 +21,4 @@ function ajaxResponseForActiveConnectionStackTrace(xmlHttpForActiveConnectionSta newRow.insertCell(-1).innerHTML = conntionStackTrace; } -} \ No newline at end of file +} diff --git a/src/main/resources/support/http/resources/js/common.js b/src/main/resources/support/http/resources/js/common.js index 957be14fe8..905698f85e 100644 --- a/src/main/resources/support/http/resources/js/common.js +++ b/src/main/resources/support/http/resources/js/common.js @@ -60,4 +60,14 @@ function ajaxResponseForReset() { alert("already reset all stat"); } -} \ No newline at end of file +} + +function getUrlVar(name) { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars[name]; +} + + diff --git a/src/main/resources/support/http/resources/js/connectionInfo.js b/src/main/resources/support/http/resources/js/connectionInfo.js index bc012c4d07..233fa5abf6 100644 --- a/src/main/resources/support/http/resources/js/connectionInfo.js +++ b/src/main/resources/support/http/resources/js/connectionInfo.js @@ -72,7 +72,8 @@ function getSqlViewJsonUrl() { return result; } -function ajaxRequestForConnectionInfo(datasourceId) { +function ajaxRequestForConnectionInfo() { + var datasourceId = getUrlVar("datasourceId"); xmlHttpForConnectionInfo = getRequestObject(); sendRequest(xmlHttpForConnectionInfo, 'connectionInfo-' + datasourceId + '.json', ajaxResponseForConnectionInfo) } @@ -124,4 +125,4 @@ function ajaxResponseForConnectionInfo() { else newRow.insertCell(-1).innerHTML = ''; } -} \ No newline at end of file +} diff --git a/src/main/resources/support/http/resources/js/datasource.js b/src/main/resources/support/http/resources/js/datasource.js index 7b7773b360..400414fe79 100644 --- a/src/main/resources/support/http/resources/js/datasource.js +++ b/src/main/resources/support/http/resources/js/datasource.js @@ -66,7 +66,7 @@ function fillDataSourceInfo(datasource) { changeInnerHtml("DS-Info-ConnectionHoldTimeHistogram" + datasource.Identity, '[' + datasource.ConnectionHoldTimeHistogram + ']'); if (datasource.RemoveAbandoned == true) - changeInnerHtml("DS-Info-ActiveConnectionStackTrace" + datasource.Identity, 'View'); + changeInnerHtml("DS-Info-ActiveConnectionStackTrace" + datasource.Identity, 'View'); else changeInnerHtml("DS-Info-ActiveConnectionStackTrace" + datasource.Identity, "require set removeAbandoned=true"); @@ -139,8 +139,8 @@ function generateDataSourceDiv(datasource) { listHtml += 'ActiveConnection StackTrace StackTrace for active Connection. [View JSON API]'; - listHtml += 'PollingConnection InfoViewInfo for polling connection. [View JSON API]'; + listHtml += 'PollingConnection InfoViewInfo for polling connection. [View JSON API]'; listHtml += ''; listHtml += ''; diff --git a/src/main/resources/support/http/resources/js/sql.js b/src/main/resources/support/http/resources/js/sql.js index ef769229b8..a3466388ac 100644 --- a/src/main/resources/support/http/resources/js/sql.js +++ b/src/main/resources/support/http/resources/js/sql.js @@ -95,7 +95,7 @@ function ajaxResponseForDataSourceSqlStatInfo() { var sqlStat = sqlStatList[i]; var newRow = sqlStatTable.insertRow(-1); newRow.insertCell(-1).innerHTML = i+1; - newRow.insertCell(-1).innerHTML = '' + subSqlString(sqlStat.SQL, 25) + ''; + newRow.insertCell(-1).innerHTML = '' + subSqlString(sqlStat.SQL, 25) + ''; // if (sqlStat.File) // newRow.insertCell(-1).innerHTML = sqlStat.File; // else @@ -109,7 +109,7 @@ function ajaxResponseForDataSourceSqlStatInfo() { //显示执行的时间比配置的均值时间慢的SQL链接 var lastSlowHtml = sqlStat.MaxTimespan; if(sqlStat.LastSlowParameters!=null&&sqlStat.LastSlowParameters.length>0){ - lastSlowHtml =''+sqlStat.MaxTimespan+''; + lastSlowHtml =''+sqlStat.MaxTimespan+''; } newRow.insertCell(-1).innerHTML = lastSlowHtml; newRow.insertCell(-1).innerHTML = sqlStat.InTransactionCount; @@ -130,4 +130,4 @@ function ajaxResponseForDataSourceSqlStatInfo() { newRow.insertCell(-1).innerHTML = '[' + sqlStat.FetchRowCountHistogram + ']'; newRow.insertCell(-1).innerHTML = '[' + sqlStat.EffectedRowCountHistogram + ']'; } -} \ No newline at end of file +} diff --git a/src/main/resources/support/http/resources/js/sqlDetail.js b/src/main/resources/support/http/resources/js/sqlDetail.js index e7bb9ffee3..a7b0f905f0 100644 --- a/src/main/resources/support/http/resources/js/sqlDetail.js +++ b/src/main/resources/support/http/resources/js/sqlDetail.js @@ -1,6 +1,7 @@ -function ajaxRequestForSqlInfo(datasourceId) { +function ajaxRequestForSqlInfo() { + var sqlId = getUrlVar("sqlId"); xmlHttpForConnectionInfo = getRequestObject(); - sendRequest(xmlHttpForConnectionInfo, 'sql-' + datasourceId + '.json', ajaxResponseForSqlInfo) + sendRequest(xmlHttpForConnectionInfo, 'sql-' + sqlId + '.json', ajaxResponseForSqlInfo) } function ajaxResponseForSqlInfo() { diff --git a/src/main/resources/support/http/resources/sqlDetail.html b/src/main/resources/support/http/resources/sqlDetail.html index e06566c7c6..9f25c82176 100644 --- a/src/main/resources/support/http/resources/sqlDetail.html +++ b/src/main/resources/support/http/resources/sqlDetail.html @@ -8,8 +8,8 @@