常州如何进行网站推广,大型的平台类网站建设需要多少资金,wordpress新站都该设置些什么,微信小程序里的网站怎么做1、处理流程图展示
当我拿出这张图#xff0c;阁下又该如何应对呢#xff1f;执行流程是不是一目了然了。【记住一句话#xff1a;所有的注解都只是一个标签或者标记#xff0c;最终都是反射找到具体方法上面的注解标记#xff0c;然后找到类、属性、方法扩展自己想要的功…1、处理流程图展示
当我拿出这张图阁下又该如何应对呢执行流程是不是一目了然了。【记住一句话所有的注解都只是一个标签或者标记最终都是反射找到具体方法上面的注解标记然后找到类、属性、方法扩展自己想要的功能功能。】
2、DispatcherServlet中央处理器或者中央调度器 下图官方的解释应该最完善了。
3、SpringMVC三大核心组件 HandlerMapping 处理器映射器作用是解析URL返回执行链以及一些列所需的拦截器DispatcherServlet源代码1030行的doDispatch(HttpServletRequest request, HttpServletResponse response)方法里面清晰地展示了执行流程大家有兴趣了可以去看看就是一个方法套方法的执行链条最终将请求进行处理直到返回ModelAndView。
/*** Process the actual dispatching to the handler.* pThe handler will be obtained by applying the servlets HandlerMappings in order.* The HandlerAdapter will be obtained by querying the servlets installed HandlerAdapters* to find the first that supports the handler class.* pAll HTTP methods are handled by this method. Its up to HandlerAdapters or handlers* themselves to decide which methods are acceptable.* param request current HTTP request* param response current HTTP response* throws Exception in case of any kind of processing failure*/SuppressWarnings(deprecation)// 最核心的请求、响应处理方法protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception //封装好的请求实例HttpServletRequest processedRequest request;// 处理器执行责任链HandlerExecutionChain mappedHandler null;//是否是多媒体文件请求boolean multipartRequestParsed false;//WebAsyncManager asyncManager WebAsyncUtils.getAsyncManager(request);try {ModelAndView mv null;Exception dispatchException null;try {processedRequest checkMultipart(request);multipartRequestParsed (processedRequest ! request);// 传递请求最终初始化处理器映射器mappedHandler getHandler(processedRequest);if (mappedHandler null) {noHandlerFound(processedRequest, response);return;}// 根据前面的处理器映射器初始化处理器适配器HandlerAdapter ha getHandlerAdapter(mappedHandler.getHandler());// 拿到请求方式String method request.getMethod();//是否是GET请求boolean isGet HttpMethod.GET.matches(method);if (isGet || HttpMethod.HEAD.matches(method)) {long lastModified ha.getLastModified(request, mappedHandler.getHandler());if (new ServletWebRequest(request, response).checkNotModified(lastModified) isGet) {return;}}if (!mappedHandler.applyPreHandle(processedRequest, response)) {return;}// 真正的处理请求并返回模型和视图mv ha.handle(processedRequest, response, mappedHandler.getHandler());if (asyncManager.isConcurrentHandlingStarted()) {return;}applyDefaultViewName(processedRequest, mv);mappedHandler.applyPostHandle(processedRequest, response, mv);}catch (Exception ex) {dispatchException ex;}catch (Throwable err) {// As of 4.3, were processing Errors thrown from handler methods as well,// making them available for ExceptionHandler methods and other scenarios.dispatchException new NestedServletException(Handler dispatch failed, err);}// 封装视图结果processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);}catch (Exception ex) {triggerAfterCompletion(processedRequest, response, mappedHandler, ex);}catch (Throwable err) {triggerAfterCompletion(processedRequest, response, mappedHandler,new NestedServletException(Handler processing failed, err));}finally {if (asyncManager.isConcurrentHandlingStarted()) {// Instead of postHandle and afterCompletionif (mappedHandler ! null) {mappedHandler.applyAfterConcurrentHandlingStarted(processedRequest, response);}}else {// Clean up any resources used by a multipart request.if (multipartRequestParsed) {cleanupMultipart(processedRequest);}}}} HandlerAdapter 处理器适配器 ViewResolver 视图解析器