#DispatcherServlet描述
在我们的ClientHandler里边分为三部分
1.初始信息加载;包括对请求信息的提取封装,以及对响应容器的初始化,响应容器对外提供设置它的内容的方法
//1、解析请求
HttpServletRequest request=new HttpServletRequest(socket);
HttpServletResponse response=new HttpServletResponse(socket);
2.根据请求路径找方法来装填响应容器;此工程在初始化的时候就会根据我们给的路径来加载controller包下的Controller类,因为我们在Controller类中每个方法上都加上了@RequestMaping注解,因此我们在加载的时候就会把请求路径与对应的MethodMapping(类型为map)封装到一个map里边,方便后边查找,MethodMapping中放的是Controller类的类对象实例,以及具体的方法(类型Method),究其原因是因为后边在使用反射机制使用方法invoke时需要传入三个实例类型参数(在这里我们传入的是Controller类对象,request类对象,response类对象,),这是invoke方法的要求.在DispatcherServlet中,一旦拿着从HttpServletRequestpath里边获取到的path在(path,MethodMapping)这个Map中找到对应值,就开始将参数传入,invoke方法运行,将参数什么的进一步传到控制各个具体业务的Controller中的method中,Controller类里边的method都是面向response和request传值的,因此将这两个对象传给它,他就可以进行各种值的处理,将处理完毕的数据一个个封装到response里边.
对于在(path,MethodMapping)中没有找到对应方法的路径我们以其path拼接到staticDir路径进行是否为文件的判断,若是文件便可以直接设置响应正文内容为文件,返回,若再不是,便判定此path错误,返回404页面
DispatcherServlet servlet=new DispatcherServlet();
servlet.service(request,response);//往response里边装东西
3.发送响应页面
response.response();
整个2都是在进行响应内容的设置,可以说DispatcherServlet的作用就是根据前端传来的路径来找对应的处置方法,无非三种:业务/文件/错误访问,讲它的作用就是职责调度工作,本身主要用于控制流程
ps:本DispatcherServlet并不同于Spring等框架中的DispatcherServlet,本项目都是在模仿SpringBoot框架的,作用大体相似,但仅仅是基础性的,望周知