网络编程处理业务功能的方法流程
DispatcherServlet是Spring MVC的核心类,和底层容器TOMCAT整合使用。使得业务员写代码时候只关注业务。
1、定位controller路径,listFiles文件清单 遍历找文件名称;
2、得到名称 class名称,截取.结束为“.”的部分,然后拼接class名称;
3、判断是否为Controller注解的类 实例化这个Controller ,obj;
4、判断是否RequestMapping注解的方法,得到这个类对象 得到这些类对象的参数value;
5、判断这个value参数跟path路径是否一致 一致就调用这个业务方法,传入reque,response 不一致的就走静态页面操作。
try {
File dir = new File(rootDir,"com/webserver/controller");
File[] subs = dir.listFiles(f->f.getName().endsWith(".class"));
for(File sub : subs){
String fileName = sub.getName();
String className = fileName.substring(0,fileName.indexOf("."));
className = "com.webserver.controller."+className;
Class cls = Class.forName(className);
if(cls.isAnnotationPresent(Controller.class)){
Object obj = cls.newInstance();//实例化这个Controller
Method[] methods = cls.getDeclaredMethods();
for(Method method : methods){
if(method.isAnnotationPresent(RequestMapping.class)){
RequestMapping rm = method.getAnnotation(RequestMapping.class);
String value = rm.value();
if(path.equals(value)){//如果请求路径与该方法中@RequestMapping注解的参数值一致
method.invoke(obj,request,response);
return;//业务处理完直接接触处理请求的操作(不走下面的处理静态页面操作)
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}