优化命名规范
This commit is contained in:
@@ -152,12 +152,12 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public boolean addForbidURIReg(final String urlreg) {
|
public boolean addForbidURIRegx(final String urlRegx) {
|
||||||
if (urlreg == null || urlreg.isEmpty()) return false;
|
if (urlRegx == null || urlRegx.isEmpty()) return false;
|
||||||
synchronized (excludeLock) {
|
synchronized (excludeLock) {
|
||||||
if (forbidURIMaps != null && forbidURIMaps.containsKey(urlreg)) return false;
|
if (forbidURIMaps != null && forbidURIMaps.containsKey(urlRegx)) return false;
|
||||||
if (forbidURIMaps == null) forbidURIMaps = new HashMap<>();
|
if (forbidURIMaps == null) forbidURIMaps = new HashMap<>();
|
||||||
String mapping = urlreg;
|
String mapping = urlRegx;
|
||||||
if (Utility.contains(mapping, '*', '{', '[', '(', '|', '^', '$', '+', '?', '\\')) { //是否是正则表达式))
|
if (Utility.contains(mapping, '*', '{', '[', '(', '|', '^', '$', '+', '?', '\\')) { //是否是正则表达式))
|
||||||
if (mapping.endsWith("/*")) {
|
if (mapping.endsWith("/*")) {
|
||||||
mapping = mapping.substring(0, mapping.length() - 1) + ".*";
|
mapping = mapping.substring(0, mapping.length() - 1) + ".*";
|
||||||
@@ -171,7 +171,7 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
|
|||||||
BiPredicate<String, String> predicate = (prefix, uri) -> {
|
BiPredicate<String, String> predicate = (prefix, uri) -> {
|
||||||
return begin || prefix.isEmpty() ? regPredicate.test(uri) : uri.matches(prefix + reg);
|
return begin || prefix.isEmpty() ? regPredicate.test(uri) : uri.matches(prefix + reg);
|
||||||
};
|
};
|
||||||
forbidURIMaps.put(urlreg, predicate);
|
forbidURIMaps.put(urlRegx, predicate);
|
||||||
forbidURIPredicates = Utility.append(forbidURIPredicates, predicate);
|
forbidURIPredicates = Utility.append(forbidURIPredicates, predicate);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -319,15 +319,15 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
|
|||||||
* @param servlet HttpServlet
|
* @param servlet HttpServlet
|
||||||
* @param prefix url前缀
|
* @param prefix url前缀
|
||||||
* @param conf 配置信息
|
* @param conf 配置信息
|
||||||
* @param mappingpaths 匹配规则
|
* @param mappingPaths 匹配规则
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void addServlet(HttpServlet servlet, Object prefix, AnyValue conf, String... mappingpaths) {
|
public void addServlet(HttpServlet servlet, Object prefix, AnyValue conf, String... mappingPaths) {
|
||||||
if (prefix == null) prefix = "";
|
if (prefix == null) prefix = "";
|
||||||
if (mappingpaths.length < 1) {
|
if (mappingPaths.length < 1) {
|
||||||
WebServlet ws = servlet.getClass().getAnnotation(WebServlet.class);
|
WebServlet ws = servlet.getClass().getAnnotation(WebServlet.class);
|
||||||
if (ws != null) {
|
if (ws != null) {
|
||||||
mappingpaths = ws.value();
|
mappingPaths = ws.value();
|
||||||
if (!ws.repair()) prefix = "";//被设置为不自动追加前缀则清空prefix
|
if (!ws.repair()) prefix = "";//被设置为不自动追加前缀则清空prefix
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -336,53 +336,53 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
|
|||||||
if (context != null) context.lazyHeaders = false; //启动后运行过程中执行addServlet
|
if (context != null) context.lazyHeaders = false; //启动后运行过程中执行addServlet
|
||||||
}
|
}
|
||||||
synchronized (allMapStrings) { //需要整段锁住
|
synchronized (allMapStrings) { //需要整段锁住
|
||||||
for (String mappingpath : mappingpaths) {
|
for (String mappingPath : mappingPaths) {
|
||||||
if (mappingpath == null) continue;
|
if (mappingPath == null) continue;
|
||||||
if (!prefix.toString().isEmpty()) mappingpath = prefix + mappingpath;
|
if (!prefix.toString().isEmpty()) mappingPath = prefix + mappingPath;
|
||||||
|
|
||||||
if (Utility.contains(mappingpath, '*', '{', '[', '(', '|', '^', '$', '+', '?', '\\')) { //是否是正则表达式))
|
if (Utility.contains(mappingPath, '*', '{', '[', '(', '|', '^', '$', '+', '?', '\\')) { //是否是正则表达式))
|
||||||
if (mappingpath.charAt(0) != '^') mappingpath = '^' + mappingpath;
|
if (mappingPath.charAt(0) != '^') mappingPath = '^' + mappingPath;
|
||||||
if (mappingpath.endsWith("/*")) {
|
if (mappingPath.endsWith("/*")) {
|
||||||
mappingpath = mappingpath.substring(0, mappingpath.length() - 1) + ".*";
|
mappingPath = mappingPath.substring(0, mappingPath.length() - 1) + ".*";
|
||||||
} else {
|
} else {
|
||||||
mappingpath = mappingpath + "$";
|
mappingPath = mappingPath + "$";
|
||||||
}
|
}
|
||||||
if (regxArray == null) {
|
if (regxArray == null) {
|
||||||
regxArray = new MappingEntry[1];
|
regxArray = new MappingEntry[1];
|
||||||
regxArray[0] = new MappingEntry(mappingpath, Pattern.compile(mappingpath).asPredicate(), servlet);
|
regxArray[0] = new MappingEntry(mappingPath, Pattern.compile(mappingPath).asPredicate(), servlet);
|
||||||
} else {
|
} else {
|
||||||
regxArray = Arrays.copyOf(regxArray, regxArray.length + 1);
|
regxArray = Arrays.copyOf(regxArray, regxArray.length + 1);
|
||||||
regxArray[regxArray.length - 1] = new MappingEntry(mappingpath, Pattern.compile(mappingpath).asPredicate(), servlet);
|
regxArray[regxArray.length - 1] = new MappingEntry(mappingPath, Pattern.compile(mappingPath).asPredicate(), servlet);
|
||||||
Arrays.sort(regxArray);
|
Arrays.sort(regxArray);
|
||||||
}
|
}
|
||||||
if (servlet instanceof WebSocketServlet) {
|
if (servlet instanceof WebSocketServlet) {
|
||||||
if (regxWsArray == null) {
|
if (regxWsArray == null) {
|
||||||
regxWsArray = new MappingEntry[1];
|
regxWsArray = new MappingEntry[1];
|
||||||
regxWsArray[0] = new MappingEntry(mappingpath, Pattern.compile(mappingpath).asPredicate(), (WebSocketServlet) servlet);
|
regxWsArray[0] = new MappingEntry(mappingPath, Pattern.compile(mappingPath).asPredicate(), (WebSocketServlet) servlet);
|
||||||
} else {
|
} else {
|
||||||
regxWsArray = Arrays.copyOf(regxWsArray, regxWsArray.length + 1);
|
regxWsArray = Arrays.copyOf(regxWsArray, regxWsArray.length + 1);
|
||||||
regxWsArray[regxWsArray.length - 1] = new MappingEntry(mappingpath, Pattern.compile(mappingpath).asPredicate(), (WebSocketServlet) servlet);
|
regxWsArray[regxWsArray.length - 1] = new MappingEntry(mappingPath, Pattern.compile(mappingPath).asPredicate(), (WebSocketServlet) servlet);
|
||||||
Arrays.sort(regxWsArray);
|
Arrays.sort(regxWsArray);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (mappingpath != null && !mappingpath.isEmpty()) {
|
} else if (mappingPath != null && !mappingPath.isEmpty()) {
|
||||||
if (servlet._actionmap != null && servlet._actionmap.containsKey(mappingpath)) {
|
if (servlet._actionmap != null && servlet._actionmap.containsKey(mappingPath)) {
|
||||||
//context.addRequestURINode(mappingpath);
|
//context.addRequestURINode(mappingpath);
|
||||||
putMapping(mappingpath, new HttpServlet.HttpActionServlet(servlet._actionmap.get(mappingpath), servlet, mappingpath));
|
putMapping(mappingPath, new HttpServlet.HttpActionServlet(servlet._actionmap.get(mappingPath), servlet, mappingPath));
|
||||||
} else {
|
} else {
|
||||||
putMapping(mappingpath, servlet);
|
putMapping(mappingPath, servlet);
|
||||||
}
|
}
|
||||||
if (servlet instanceof WebSocketServlet) {
|
if (servlet instanceof WebSocketServlet) {
|
||||||
Map<String, WebSocketServlet> newmappings = new HashMap<>(wsmappings);
|
Map<String, WebSocketServlet> newmappings = new HashMap<>(wsmappings);
|
||||||
newmappings.put(mappingpath, (WebSocketServlet) servlet);
|
newmappings.put(mappingPath, (WebSocketServlet) servlet);
|
||||||
this.wsmappings = newmappings;
|
this.wsmappings = newmappings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.allMapStrings.containsKey(mappingpath)) {
|
if (this.allMapStrings.containsKey(mappingPath)) {
|
||||||
Class old = this.allMapStrings.get(mappingpath);
|
Class old = this.allMapStrings.get(mappingPath);
|
||||||
throw new RuntimeException("mapping [" + mappingpath + "] repeat on " + old.getName() + " and " + servlet.getClass().getName());
|
throw new RuntimeException("mapping [" + mappingPath + "] repeat on " + old.getName() + " and " + servlet.getClass().getName());
|
||||||
}
|
}
|
||||||
this.allMapStrings.put(mappingpath, servlet.getClass());
|
this.allMapStrings.put(mappingPath, servlet.getClass());
|
||||||
}
|
}
|
||||||
setServletConf(servlet, conf);
|
setServletConf(servlet, conf);
|
||||||
servlet._prefix = prefix.toString();
|
servlet._prefix = prefix.toString();
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
|
|
||||||
protected static final String KEY_HTTP_1_1 = "HTTP/1.1";
|
protected static final String KEY_HTTP_1_1 = "HTTP/1.1";
|
||||||
|
|
||||||
|
protected static final String KEY_HTTP_2_0 = "HTTP/2.0";
|
||||||
|
|
||||||
protected static final String KEY_COOKIE = "Cookie";
|
protected static final String KEY_COOKIE = "Cookie";
|
||||||
|
|
||||||
protected static final String KEY_CONNECTION = "Connection";
|
protected static final String KEY_CONNECTION = "Connection";
|
||||||
@@ -530,6 +532,8 @@ public class HttpRequest extends Request<HttpContext> {
|
|||||||
size = bytes.length();
|
size = bytes.length();
|
||||||
if (size == 8 && bytes.get(0) == 'H' && bytes.get(5) == '1' && bytes.get(7) == '1') {
|
if (size == 8 && bytes.get(0) == 'H' && bytes.get(5) == '1' && bytes.get(7) == '1') {
|
||||||
this.protocol = KEY_HTTP_1_1;
|
this.protocol = KEY_HTTP_1_1;
|
||||||
|
} else if (size == 8 && bytes.get(0) == 'H' && bytes.get(5) == '2' && bytes.get(7) == '0') {
|
||||||
|
this.protocol = KEY_HTTP_2_0;
|
||||||
} else {
|
} else {
|
||||||
this.protocol = bytes.toString(charset);
|
this.protocol = bytes.toString(charset);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,8 +68,6 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
|
|
||||||
private static final ZoneId ZONE_GMT = ZoneId.of("GMT");
|
private static final ZoneId ZONE_GMT = ZoneId.of("GMT");
|
||||||
|
|
||||||
private static final OpenOption[] options = new OpenOption[]{StandardOpenOption.READ};
|
|
||||||
|
|
||||||
private static final Map<Integer, String> httpCodes = new HashMap<>();
|
private static final Map<Integer, String> httpCodes = new HashMap<>();
|
||||||
|
|
||||||
private static final byte[][] contentLengthArray = new byte[cacheMaxContentLength][];
|
private static final byte[][] contentLengthArray = new byte[cacheMaxContentLength][];
|
||||||
@@ -936,32 +934,6 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
|
|||||||
super.finish(false, data.content(), 0, data.length());
|
super.finish(false, data.content(), 0, data.length());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ByteArray data = headerArray;
|
|
||||||
// int pipelineIndex = request.getPipelineIndex();
|
|
||||||
// if (pipelineIndex > 0) {
|
|
||||||
// boolean over = this.channel.writePipelineData(pipelineIndex, request.getPipelineCount(), data.content(), 0, data.length(), bs, offset, length);
|
|
||||||
// if (callback != null) callback.accept(attachment);
|
|
||||||
// if (cacheHandler != null) cacheHandler.accept(this, Utility.append(data.getBytes(), bs, offset, length));
|
|
||||||
//
|
|
||||||
// if (over) {
|
|
||||||
// request.setPipelineOver(true);
|
|
||||||
// this.channel.flushPipelineData(this.pipelineWriteHandler);
|
|
||||||
// } else {
|
|
||||||
// removeChannel();
|
|
||||||
// this.responseConsumer.accept(this);
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (this.channel.hasPipelineData()) {
|
|
||||||
// this.channel.writePipelineData(pipelineIndex, request.getPipelineCount(), data.content(), 0, data.length(), bs, offset, length);
|
|
||||||
// if (callback != null) callback.accept(attachment);
|
|
||||||
// if (cacheHandler != null) cacheHandler.accept(this, Utility.append(data.getBytes(), bs, offset, length));
|
|
||||||
// this.channel.flushPipelineData(this.pipelineWriteHandler);
|
|
||||||
// } else {
|
|
||||||
// //不能用finish(boolean kill, final ByteTuple array) 否则会调this.finish
|
|
||||||
// super.finish(false, data.content(), 0, data.length(), bs, offset, length, callback, attachment);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
|
|||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
public boolean addForbidURIReg(final String urlreg) {
|
public boolean addForbidURIReg(final String urlreg) {
|
||||||
return ((HttpDispatcherServlet) this.dispatcher).addForbidURIReg(urlreg);
|
return ((HttpDispatcherServlet) this.dispatcher).addForbidURIRegx(urlreg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import java.lang.annotation.*;
|
|||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配合 HttpServlet 使用。
|
* 配合 HttpServlet 使用
|
||||||
* 用于指定HttpRequest.currentUser的数据类型。<br>
|
* 用于指定HttpRequest.currentUser的数据类型<br>
|
||||||
* 注意: 数据类型是JavaBean, 不能是基本数据类型、String、byte[]、File等Java内置的数据类型
|
* 注意: 数据类型是JavaBean, 不能是基本数据类型、String、byte[]、File等Java内置的数据类型
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
Reference in New Issue
Block a user