Browse Source

jfinal 3.5

James 7 years ago
parent
commit
2f1896d74f
1 changed files with 31 additions and 23 deletions
  1. 31 23
      src/main/java/com/jfinal/core/ActionHandler.java

+ 31 - 23
src/main/java/com/jfinal/core/ActionHandler.java

@@ -109,29 +109,7 @@ public class ActionHandler extends Handler {
 			}
 		}
 		catch (ActionException e) {
-			int errorCode = e.getErrorCode();
-			String msg = null;
-			if (errorCode == 404) {
-				msg = "404 Not Found: ";
-			} else if (errorCode == 401) {
-				msg = "401 Unauthorized: ";
-			} else if (errorCode == 403) {
-				msg = "403 Forbidden: ";
-			}
-			
-			if (msg != null) {
-				if (log.isWarnEnabled()) {
-					String qs = request.getQueryString();
-					log.warn(msg + (qs == null ? target : target + "?" + qs));
-				}
-			} else {
-				if (log.isErrorEnabled()) {
-					String qs = request.getQueryString();
-					log.error(qs == null ? target : target + "?" + qs, e);
-				}
-			}
-			
-			e.getErrorRender().setContext(request, response, action.getViewPath()).render();
+			handleActionException(target, request, response, action, e);
 		}
 		catch (Exception e) {
 			if (log.isErrorEnabled()) {
@@ -145,6 +123,36 @@ public class ActionHandler extends Handler {
 			}
 		}
 	}
+	
+	/**
+	 * 抽取出该方法是为了缩短 handle 方法中的代码量,便于获得 JIT 优化,
+	 * 方法长度超过 8000 个字节码时,将不会被 JIT 编译成二进制码
+	 */
+	private void handleActionException(String target, HttpServletRequest request, HttpServletResponse response, Action action, ActionException e) {
+		int errorCode = e.getErrorCode();
+		String msg = null;
+		if (errorCode == 404) {
+			msg = "404 Not Found: ";
+		} else if (errorCode == 401) {
+			msg = "401 Unauthorized: ";
+		} else if (errorCode == 403) {
+			msg = "403 Forbidden: ";
+		}
+		
+		if (msg != null) {
+			if (log.isWarnEnabled()) {
+				String qs = request.getQueryString();
+				log.warn(msg + (qs == null ? target : target + "?" + qs));
+			}
+		} else {
+			if (log.isErrorEnabled()) {
+				String qs = request.getQueryString();
+				log.error(qs == null ? target : target + "?" + qs, e);
+			}
+		}
+		
+		e.getErrorRender().setContext(request, response, action.getViewPath()).render();
+	}
 }