@@ -64,6 +64,11 @@ public class MappingServlet extends HttpServlet {
64
64
*/
65
65
protected final ServletUrlPatternRegistrar urlMappingRegistrar ;
66
66
67
+ /**
68
+ * Default is {@link LoggingExceptionHandler}
69
+ */
70
+ protected final ExceptionHandler exceptionHandler ;
71
+
67
72
public MappingServlet () {
68
73
this (true );
69
74
}
@@ -75,70 +80,62 @@ public MappingServlet() {
75
80
* <a href="http://docs.spring.io/spring/docs/5.0.x/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.html#setUseTrailingSlashMatch-boolean-">Spring API</a>
76
81
*/
77
82
public MappingServlet (boolean useTrailingSlashMatch ) {
83
+ this (new LoggingExceptionHandler (), useTrailingSlashMatch );
84
+ }
85
+
86
+ public MappingServlet (ExceptionHandler exceptionHandler , boolean useTrailingSlashMatch ) {
78
87
this .urlMappingRegistrar = new ServletUrlPatternRegistrar (useTrailingSlashMatch );
88
+ this .exceptionHandler = exceptionHandler ;
79
89
}
80
90
81
91
@ Override
82
92
protected void doGet (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
83
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
84
-
85
- if (servletUrl .is404 ()) {
86
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
87
- }
93
+ doCommon (request , response );
88
94
}
89
95
90
96
@ Override
91
97
protected void doHead (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
92
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
93
-
94
- if (servletUrl .is404 ()) {
95
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
96
- }
98
+ doCommon (request , response );
97
99
}
98
100
99
101
@ Override
100
102
protected void doPost (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
101
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
102
-
103
- if (servletUrl .is404 ()) {
104
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
105
- }
103
+ doCommon (request , response );
106
104
}
107
105
108
106
@ Override
109
107
protected void doPut (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
110
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
111
-
112
- if (servletUrl .is404 ()) {
113
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
114
- }
108
+ doCommon (request , response );
115
109
}
116
110
117
111
@ Override
118
112
protected void doDelete (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
119
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
120
-
121
- if (servletUrl .is404 ()) {
122
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
123
- }
113
+ doCommon (request , response );
124
114
}
125
115
126
116
@ Override
127
117
protected void doOptions (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
128
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
129
-
130
- if (servletUrl .is404 ()) {
131
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
132
- }
118
+ doCommon (request , response );
133
119
}
134
120
135
121
@ Override
136
122
protected void doTrace (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
137
- final ServletUrl servletUrl = urlMappingRegistrar .handle (request , response );
123
+ doCommon (request , response );
124
+ }
125
+
126
+ private void doCommon (HttpServletRequest request , HttpServletResponse response ) {
127
+ final ServletUrl servletUrl ;
128
+ try {
129
+ servletUrl = urlMappingRegistrar .handle (request , response );
138
130
139
- if (servletUrl .is404 ()) {
140
- response .sendError (HttpServletResponse .SC_NOT_FOUND );
131
+ if (servletUrl .is404 ()) {
132
+ response .sendError (HttpServletResponse .SC_NOT_FOUND );
133
+ }
141
134
}
135
+ catch (Exception e ) {
136
+ this .exceptionHandler .handleException (request , response , e );
137
+ }
138
+
142
139
}
143
140
144
141
}
0 commit comments