From 5f1556e5cb1b7299c86c79842e23dfe867c6a6ca Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 15 Aug 2016 11:20:33 +0800 Subject: [PATCH] --- .../redkale/net/http/HttpPrepareServlet.java | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/org/redkale/net/http/HttpPrepareServlet.java b/src/org/redkale/net/http/HttpPrepareServlet.java index 9d741bb7b..d783091bc 100644 --- a/src/org/redkale/net/http/HttpPrepareServlet.java +++ b/src/org/redkale/net/http/HttpPrepareServlet.java @@ -105,34 +105,37 @@ public final class HttpPrepareServlet extends PrepareServlet(Pattern.compile(mapping).asPredicate(), servlet); - } else { - regArray = Arrays.copyOf(regArray, regArray.length + 1); - regArray[regArray.length - 1] = new SimpleEntry<>(Pattern.compile(mapping).asPredicate(), servlet); + if (contains(mapping, '.', '*', '{', '[', '(', '|', '^', '$', '+', '?', '\\')) { //是否是正则表达式)) + if (mapping.charAt(0) != '^') mapping = '^' + mapping; + if (mapping.endsWith("/*")) { + mapping = mapping.substring(0, mapping.length() - 1) + ".*"; + } else { + mapping = mapping + "$"; + } + if (regArray == null) { + regArray = new SimpleEntry[1]; + regArray[0] = new SimpleEntry<>(Pattern.compile(mapping).asPredicate(), servlet); + } else { + regArray = Arrays.copyOf(regArray, regArray.length + 1); + regArray[regArray.length - 1] = new SimpleEntry<>(Pattern.compile(mapping).asPredicate(), servlet); + } + } else if (mapping != null && !mapping.isEmpty()) { + super.mappings.put(mapping, servlet); } - } else if (mapping != null && !mapping.isEmpty()) { - super.mappings.put(mapping, servlet); + this.mapStrings.put(mapping, servlet.getClass()); } - this.mapStrings.put(mapping, servlet.getClass()); + setServletConf(servlet, conf); + servlet._prefix = prefix.toString(); + this.servlets.add(servlet); } - setServletConf(servlet, conf); - servlet._prefix = prefix.toString(); - this.servlets.add(servlet); } private static boolean contains(String string, char... values) {