@@ -79,6 +79,7 @@ protected Map<Charset, DefaultHttpDataFactory> initialValue() throws Exception {
79
79
private final UrlMapper <ServletRegistration > servletUrlMapper = new UrlMapper <>();
80
80
private final FilterMapper <ServletFilterRegistration > filterUrlMapper = new FilterMapper <>();
81
81
private final ClassLoader classLoader ;
82
+ private LoggerX logger = LoggerFactoryX .getLogger (getLogName ("" ));
82
83
Supplier <Executor > defaultExecutorSupplier ;
83
84
String contextPath = "" ;
84
85
/**
@@ -92,21 +93,23 @@ protected Map<Charset, DefaultHttpDataFactory> initialValue() throws Exception {
92
93
/**
93
94
* Minimum upload file length, in bytes (becomes temporary file storage if larger than uploadMinSize)
94
95
*/
95
- private long fileSizeThreshold = 4096 * 16 ;
96
+ int fileSizeThreshold = 4096 * 16 ;
96
97
/**
97
98
* Upload file timeout millisecond , -1 is not control timeout.
98
99
*/
99
- private long uploadFileTimeoutMs = -1 ;
100
+ long uploadFileTimeoutMs = -1 ;
100
101
private Supplier <Executor > asyncExecutorSupplier ;
101
102
private SessionService sessionService ;
102
103
private Set <SessionTrackingMode > sessionTrackingModeSet ;
103
104
private Servlet defaultServlet = new DefaultServlet ();
104
- private boolean enableLookupFlag = false ;
105
+ boolean enableLookupFlag = false ;
105
106
private boolean mapperContextRootRedirectEnabled = true ;
106
- private boolean useRelativeRedirects = true ;
107
+ boolean useRelativeRedirects = true ;
107
108
private String serverHeader ;
108
- private String requestCharacterEncoding ;
109
- private String responseCharacterEncoding ;
109
+ String requestCharacterEncoding = HttpConstants .DEFAULT_CHARSET .name ();
110
+ Charset requestCharacterEncodingCharset = HttpConstants .DEFAULT_CHARSET ;
111
+ String responseCharacterEncoding = HttpConstants .DEFAULT_CHARSET .name ();
112
+ Charset responseCharacterEncodingCharset = HttpConstants .DEFAULT_CHARSET ;
110
113
private String servletContextName ;
111
114
/**
112
115
* output stream maxBufferBytes
@@ -151,6 +154,15 @@ public static void asyncClose(Closeable closeable) {
151
154
}
152
155
}
153
156
157
+ private static String getLogName (String name ) {
158
+ if ((name == null ) || (name .isEmpty ())) {
159
+ name = "/" ;
160
+ } else if (name .startsWith ("##" )) {
161
+ name = "/" + name ;
162
+ }
163
+ return "[" + name + "]" ;
164
+ }
165
+
154
166
public static String normPath (String path ) {
155
167
if (path .isEmpty ()) {
156
168
return path ;
@@ -169,6 +181,28 @@ public static String normPath(String path) {
169
181
return path ;
170
182
}
171
183
184
+ /**
185
+ * 是否开启UrlServlet的AntPathMatcher路径匹配,默认false不开启
186
+ */
187
+ public void setEnableUrlServletAntPathMatcher (boolean enableAntPathMatcher ) {
188
+ servletUrlMapper .setEnableAntPathMatcher (enableAntPathMatcher );
189
+ }
190
+
191
+ /**
192
+ * 是否开启UrlFilter的AntPathMatcher路径匹配,默认false不开启
193
+ */
194
+ public void setEnableUrlFilterAntPathMatcher (boolean enableAntPathMatcher ) {
195
+ filterUrlMapper .setEnableAntPathMatcher (enableAntPathMatcher );
196
+ }
197
+
198
+ public boolean isEnableUrlServletAntPathMatcher () {
199
+ return servletUrlMapper .isEnableAntPathMatcher ();
200
+ }
201
+
202
+ public boolean isEnableUrlFilterAntPathMatcher () {
203
+ return filterUrlMapper .isEnableAntPathMatcher ();
204
+ }
205
+
172
206
public DefaultServlet getDefaultServletCast () {
173
207
if (defaultServlet instanceof DefaultServlet ) {
174
208
return (DefaultServlet ) defaultServlet ;
@@ -241,18 +275,14 @@ public void setDocBase(String docBase, String workspace) {
241
275
ResourceManager old = this .resourceManager ;
242
276
this .resourceManager = new ResourceManager (docBase , workspace , classLoader );
243
277
if (old != null ) {
244
- getLog () .warn ("ServletContext docBase override. old = {}, new = {}" , old , this .resourceManager );
278
+ logger .warn ("ServletContext docBase override. old = {}, new = {}" , old , this .resourceManager );
245
279
}
246
280
DiskFileUpload .deleteOnExitTemporaryFile = true ;
247
281
DiskAttribute .deleteOnExitTemporaryFile = true ;
248
282
DiskFileUpload .baseDirectory = resourceManager .getRealPath (DEFAULT_UPLOAD_DIR );
249
283
DiskAttribute .baseDirectory = resourceManager .getRealPath (DEFAULT_UPLOAD_DIR );
250
284
}
251
285
252
- private LoggerX getLog () {
253
- return LoggerFactoryX .getLogger (contextPath );
254
- }
255
-
256
286
public Executor getExecutor () {
257
287
Executor executor = asyncExecutorSupplier != null ? asyncExecutorSupplier .get () : null ;
258
288
if (executor == null ) {
@@ -296,12 +326,12 @@ public HttpDataFactory getHttpDataFactory(Charset charset) {
296
326
});
297
327
}
298
328
299
- public long getFileSizeThreshold () {
329
+ public int getFileSizeThreshold () {
300
330
return fileSizeThreshold ;
301
331
}
302
332
303
333
public void setFileSizeThreshold (long fileSizeThreshold ) {
304
- this .fileSizeThreshold = Math .max (fileSizeThreshold , MIN_FILE_SIZE_THRESHOLD );
334
+ this .fileSizeThreshold = ( int ) Math .max (fileSizeThreshold , MIN_FILE_SIZE_THRESHOLD );
305
335
}
306
336
307
337
public MimeMappingsX getMimeMappings () {
@@ -387,6 +417,7 @@ public void setContextPath(String contextPath) {
387
417
this .contextPath = normed ;
388
418
this .filterUrlMapper .setRootPath (normed );
389
419
this .servletUrlMapper .setRootPath (normed );
420
+ this .logger = LoggerFactoryX .getLogger (getLogName (normed ));
390
421
}
391
422
392
423
@ Override
@@ -455,11 +486,11 @@ public String getRealPath(String path) {
455
486
456
487
@ Override
457
488
public ServletRequestDispatcher getRequestDispatcher (String path ) {
458
- return getRequestDispatcher (path , DispatcherType .REQUEST );
489
+ return getRequestDispatcher (path , DispatcherType .REQUEST , true );
459
490
}
460
491
461
- ServletRequestDispatcher getRequestDispatcher (String path , DispatcherType dispatcherType ) {
462
- String pathNormalize = ServletUtil .pathNormalize (path , true );
492
+ ServletRequestDispatcher getRequestDispatcher (String path , DispatcherType dispatcherType , boolean normalize ) {
493
+ String pathNormalize = normalize ? ServletUtil .pathNormalize (path , true ) : path ;
463
494
if (pathNormalize == null ) {
464
495
return null ;
465
496
}
@@ -527,17 +558,23 @@ public Enumeration<String> getServletNames() {
527
558
528
559
@ Override
529
560
public void log (String msg ) {
530
- getLog ().debug (msg );
561
+ if (logger .isInfoEnabled ()) {
562
+ logger .info (msg );
563
+ }
531
564
}
532
565
533
566
@ Override
534
567
public void log (Exception exception , String msg ) {
535
- getLog ().debug (msg , exception );
568
+ if (logger .isErrorEnabled ()) {
569
+ logger .error (msg , exception );
570
+ }
536
571
}
537
572
538
573
@ Override
539
574
public void log (String message , Throwable throwable ) {
540
- getLog ().debug (message , throwable );
575
+ if (logger .isErrorEnabled ()) {
576
+ logger .error (message , throwable );
577
+ }
541
578
}
542
579
543
580
@ Override
@@ -592,7 +629,7 @@ public void setAttribute(String name, Object object) {
592
629
}
593
630
594
631
Object oldObject = attributeMap .put (name , object );
595
- ServletEventListenerManager listenerManager = getServletEventListenerManager () ;
632
+ ServletEventListenerManager listenerManager = this . servletEventListenerManager ;
596
633
if (listenerManager .hasServletContextAttributeListener ()) {
597
634
listenerManager .onServletContextAttributeAdded (new ServletContextAttributeEvent (this , name , object ));
598
635
if (oldObject != null ) {
@@ -604,7 +641,7 @@ public void setAttribute(String name, Object object) {
604
641
@ Override
605
642
public void removeAttribute (String name ) {
606
643
Object oldObject = attributeMap .remove (name );
607
- ServletEventListenerManager listenerManager = getServletEventListenerManager () ;
644
+ ServletEventListenerManager listenerManager = this . servletEventListenerManager ;
608
645
if (listenerManager .hasServletContextAttributeListener ()) {
609
646
listenerManager .onServletContextAttributeRemoved (new ServletContextAttributeEvent (this , name , oldObject ));
610
647
}
@@ -763,7 +800,7 @@ public <T extends EventListener> void addListener(T listener) {
763
800
Objects .requireNonNull (listener );
764
801
765
802
boolean addFlag = false ;
766
- ServletEventListenerManager listenerManager = getServletEventListenerManager () ;
803
+ ServletEventListenerManager listenerManager = this . servletEventListenerManager ;
767
804
if (listener instanceof ServletContextAttributeListener ) {
768
805
listenerManager .addServletContextAttributeListener ((ServletContextAttributeListener ) listener );
769
806
addFlag = true ;
@@ -843,28 +880,30 @@ public String getVirtualServerName() {
843
880
844
881
@ Override
845
882
public String getRequestCharacterEncoding () {
846
- if (requestCharacterEncoding == null ) {
847
- return HttpConstants .DEFAULT_CHARSET .name ();
848
- }
849
883
return requestCharacterEncoding ;
850
884
}
851
885
852
886
@ Override
853
887
public void setRequestCharacterEncoding (String requestCharacterEncoding ) {
888
+ if (requestCharacterEncoding == null ) {
889
+ requestCharacterEncoding = HttpConstants .DEFAULT_CHARSET .name ();
890
+ }
854
891
this .requestCharacterEncoding = requestCharacterEncoding ;
892
+ this .requestCharacterEncodingCharset = Charset .forName (requestCharacterEncoding );
855
893
}
856
894
857
895
@ Override
858
896
public String getResponseCharacterEncoding () {
859
- if (responseCharacterEncoding == null ) {
860
- return HttpConstants .DEFAULT_CHARSET .name ();
861
- }
862
897
return responseCharacterEncoding ;
863
898
}
864
899
865
900
@ Override
866
901
public void setResponseCharacterEncoding (String responseCharacterEncoding ) {
902
+ if (responseCharacterEncoding == null ) {
903
+ responseCharacterEncoding = HttpConstants .DEFAULT_CHARSET .name ();
904
+ }
867
905
this .responseCharacterEncoding = responseCharacterEncoding ;
906
+ this .responseCharacterEncodingCharset = Charset .forName (responseCharacterEncoding );
868
907
}
869
908
870
909
@ Override
0 commit comments