??????1????????method ???????????????????????????滻?????????????????????????????????????method??????????????method???????????????????????????method.getParameterTypes()????method?и????????????????ò?????????????????????????????????????????????asm???????й?????????о????????????????Demo?????????ú????в????????????asm??????????У??????method??2??classNames??paraNames???????????????????????
List<String> paraNames= MethodResolver.getMethodNames(clazz.getName()??methodPro.getName());
List<String> classNames= CollectionUtils.classArrToStringList(method.getParameterTypes());
Object[] args=MethodResolver.makeArgs(paraNames??classNames??req??resp??model);
public static List<String> getMethodNames(String className??String methodName) throws IOException {
List<String> list=new ArrayList<String>();
String cn=Config.getProPath()+className.replace("."?? "/")+".class";
InputStream is=new FileInputStream(new File(cn));
ClassReader cr = new ClassReader(is);
ReadMethodArgNameClassVisitor classVisitor = new ReadMethodArgNameClassVisitor();
cr.accept(classVisitor?? 0);
for(Entry<String?? List<String>> entry : classVisitor.nameArgMap.entrySet()) {
if(entry.getKey().equals(methodName)) {
for (String s : entry.getValue()) {
list.add(s);
}
}
}
return list;
}
??????2??????????????method???????????е?request??response???????Object[] args??????????á?????????????????????С?????classNames??paraNames?????????? ????????[??????]??????????????javax.servlet.http.HttpServletRequest????javax.servlet.http.HttpServletResponse????ModelMap????????args?У?????????ж??????????????String?????????request??ParameterNames??????????????????args?????????????ж????????request??ParameterNames???????????????е????????????String????????????????????????????????????????????????ж??????????????????????д?????????????????????????????????????÷???????????????????е????????????request??ParameterNames????????????????????????????args?????????????????????????args????null???????????е?classNames??paraNames????method???????????????顣
????5.???·??????
??????@Controller??????л????????????????????????????????????·??????????????????????????
????Object result=method.invoke(clazz.newInstance()??args);
????Map<String??Object> map=model.getMap();
????for(String key:map.keySet())
????{
????req.setAttribute(key??map.get(key));
????}
????if(result instanceof String)
????{
????req.getRequestDispatcher(Config.getConfig("pagePath")+File.separator+result.toString()+Config.getConfig("suffix")).forward(req?? resp);
????}
????6.????
??????????????????IDE??????????jar?????????? mvn install??????????????????web?????????jar????servlet???????д????????*.do??????????????web.xml???????????????????????????????á?
????<%@ page contentType="text/html;charset=UTF-8" language="java" %>
????<html>
????<head>
????<title>11</title>
????</head>
????<body>
??????????:${time}
????</body>
????</html>
??????????????????????δ???????jsp????????tomcat????Ч???

??????
???????????????д??3??4????????annotation??asm???????????????????????????MVC??????????????????????