From 64cf1aec8f3540d0a7beb54583ed1862b8528ff1 Mon Sep 17 00:00:00 2001 From: chenchenxinhai <2793915820@qq.com> Date: Sun, 29 Oct 2023 13:55:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0head=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bwei/cxh/servlet/DispatcherServlet.java | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/bwei/cxh/servlet/DispatcherServlet.java b/src/main/java/com/bwei/cxh/servlet/DispatcherServlet.java index 66d85ad..ded1310 100644 --- a/src/main/java/com/bwei/cxh/servlet/DispatcherServlet.java +++ b/src/main/java/com/bwei/cxh/servlet/DispatcherServlet.java @@ -1,18 +1,18 @@ package com.bwei.cxh.servlet; -import com.bwei.cxh.EnjoyAutowired; -import com.bwei.cxh.EnjoyController; -import com.bwei.cxh.EnjoyRequestMapping; -import com.bwei.cxh.EnjoyService; +import com.bwei.cxh.*; import com.bwei.cxh.controller.CxhController; import javax.servlet.ServletConfig; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; +import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -89,6 +89,10 @@ public class DispatcherServlet extends HttpServlet { } } catch (ClassNotFoundException e) { e.printStackTrace(); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); } } } @@ -133,8 +137,32 @@ public class DispatcherServlet extends HttpServlet { } } - private Object[] hand(HttpServletRequest req, HttpServletResponse resp, Method method) { - return new Object[0]; + private Object[] hand(HttpServletRequest request, HttpServletResponse response, Method method) { + Class[] paramClazzs = method.getParameterTypes(); + Object[] args = new Object[paramClazzs.length]; + int args_i=0; + int index=0; + for (Class paramClazz : paramClazzs) { + if (ServletRequest.class.isAssignableFrom(paramClazz)){ + args[args_i++] =request; + } + if (ServletResponse.class.isAssignableFrom(paramClazz)){ + args[args_i++]=response; + } + Annotation[] paramAns = method.getParameterAnnotations()[index]; + if (paramAns.length>0){ + for (Annotation paramAn : paramAns) { + if (EnjoyRequestParam.class.isAssignableFrom(paramAn.getClass())){ + EnjoyRequestParam rp = (EnjoyRequestParam) paramAn; + // 找到注解里的name和age + args[args_i++]=request.getParameter(rp.value()); + } + } + } + index++; + } + return args; + }