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; + }