
springMVC
文章平均质量分 86
菜鸡旭旭
java爱好者
展开
-
springmvc的最小化配置
SpringMVC的配置步骤1.在web.xml中配置Servlet2.创建SpringMVC的xml配置文件3.创建Controller和view1web.xml<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:原创 2017-12-31 15:57:06 · 224 阅读 · 0 评论 -
HandlerMapping(五)SimpleUrlHandlerMapping
在上一博客中我们介绍了handlerMap有一个注册url和Handler关系的注册函数,这个函数的调用是在实现类SimpleUrlHandlerMapping中实现的,目的是springMVC容器启动时将url和handler的对应关系注册到handlerMap中。SimpleUrlHandlerMapping有一个初始化容器上下问的操作,调用父类的super.initApplication...原创 2018-03-23 17:56:48 · 1473 阅读 · 0 评论 -
HandlerMapping(六)AbstractDetectingUrlHandlerMapping和AbstractControllerUrlHandlerMapping
在上一博客中我们介绍了handlerMap有一个注册url和Handler关系的注册函数,这个函数的调用是在实现类AbstractDetectingUrlHandlerMapping中实现的,目的是springMVC容器启动时将url和handler的对应关系注册到handlerMap中。AbstractDetectingUrlHandlerMapping 抽象类:通过重写initApplic...原创 2018-03-23 18:08:50 · 439 阅读 · 0 评论 -
HandlerMapping(八)
我们介绍了AbstractUrlHandlerMapping,其定义了一个抽象函数 //抽象方法,子类中实现 protected abstract String[] determineUrlsForHandler(String beanName); 在AbstractUrlHandlerMapping的子类BeanNameUrlHandlerMappin...原创 2018-03-23 18:11:33 · 163 阅读 · 0 评论 -
FlashMap和FlashMapManger
看定义知道它是一个Map用来保存数据的。RedirectView在页面跳转,数据的保存依赖于FlashMap和FlashMapMangerFlashMapManger在容器初始化时被填入,而FlashMap从Manger可以获取。在redirectView中的应用 protected void renderMergedOutputModel(Map<String, Object>...原创 2018-03-29 18:39:48 · 3099 阅读 · 0 评论 -
关于handler怎么获取handlerAdapter
在doDispatcher的第二步是通过handler获取handlerAdapter 在doDisptcher里的代码为// Determine handler adapter for the current request.HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());然后我们进入该方法...原创 2018-03-24 10:50:49 · 606 阅读 · 0 评论 -
HandlerAdapter
HandleAdapter HandlerAdapter的功能实际就是执行我们的具体的Controller、Servlet或者HttpRequestHandler中的方法。类结构如下:1、SimpleServletHandlerAdapter实际就是执行HttpServlet的service方法 springMVC源码分析–SimpleServletHandlerAdapter(二)...原创 2018-03-26 11:14:09 · 1419 阅读 · 0 评论 -
doDispatcher中的页面渲染
通过handleAdpter利用handler对象调用handle方法返回逻辑视图 mv 其实就是匹配合适的adpter 然后根据类型调用handler自身的方法而已。Servlet类型的调用service方法。 Controller类型的handleRequest方法。 HttpRquest类型的handleRequest方法。然后进入到了视图渲染阶段 在doDispatche...原创 2018-03-26 16:26:31 · 316 阅读 · 1 评论 -
关于文件上传
SpringMvc提供了文件上传下载功能需要依赖第三方包comms-fileupdown配置 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 接下来我们了解一下文件上传到达处理的Controller时做的预处理。...原创 2018-03-27 17:21:11 · 448 阅读 · 0 评论 -
SimpleServletHandleAdapter
SimpleServletHandlerAdapter其实是一个Servlet的适配器,其最终执行的方法是Servlet的service方法,源码如下,我们可以看到其真正起作用的地方是((Servlet) handler).service(request, response),其实也就是调用Servlet的service,其实本质还是比较简单的。supports方法就是判断handler是否是...原创 2018-03-27 17:31:19 · 699 阅读 · 0 评论 -
SpringMVC组件之RequestToViewNameTranslator
RequestToViewNameTranslator 作用 从request中获取viewName public interface RequestToViewNameTranslator { /** * Translate the given {@link HttpServletRequest} into a view name. ...原创 2018-03-27 18:00:50 · 2026 阅读 · 0 评论 -
SpringMVC组件之ViewResolver
ViewResolver作用:根据viewName找到view对象SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。View接口的主要作...原创 2018-03-27 19:01:55 · 1398 阅读 · 0 评论 -
常见的ViewResolver
Spring中提供了很多的ViewResolver,这里列出一些常见的视图解析器1、AbstractCachingViewResolver:这是一个抽象类,这种视图解析器会把它曾经解析过的视图保存起来,然后每次要解析视图的时候先从缓存里面找,如果找到了对应的视图就直接返回,如果没有就创建一个新的视图对象,然后把它放到一个用于缓存的map中,接着再把新建的视图返回。使用这种视图缓存的方式可以把解...原创 2018-03-27 19:05:38 · 1985 阅读 · 0 评论 -
SpringMVC之View
viewResolver组件会将viewName解析成view对象,view对象会调用render完成结果的处理。View接口及实现类结构图:不同的实现类有不同的视图效果:1、VelocityView是用来和Velocity框架结合生成页面视图2、FreeMarkerView是用来和FreeMarker框架结合生成页面视图3、JstlView是用来生成jstl页面4、RedirectView是生成...原创 2018-03-28 10:18:38 · 4045 阅读 · 0 评论 -
SpringMVC之RedirectView
前面讲解了View和InternalViewResource本节课讲述另外一个RedirectView用于页面跳转的首先我们需要了解请求的跳转会在浏览器中修改请求链接,这样跳转的请求和原请求就是两个不相干的请求,跳转的请求会丢失掉原请求的中的所有数据,一般的解决方法是将原请求中的数据放到跳转请求的链接中这样来获取数据。首先当返回值为"redirect:get.action"时,会调用ViewNam...原创 2018-03-28 10:26:10 · 1292 阅读 · 0 评论 -
HandlerMapping(四)AbstractUrlHandlerMapping
分析第二个体系AbstractUrlHandlerMapping系列通过url来进行匹配。此系列的大致原理是将url和对应的Handler保存在一个Map中, 在getHandlerInternal方法使用url从map中获取Handler。 映射过程自己实现, 而map的初始化交给具体的子类去完成 handlerMap 还有一个处理’/’的rootHandler....原创 2018-03-23 16:55:21 · 255 阅读 · 0 评论 -
HandlerMapping(三)AbstractHandlerMethodMapping
分析第一个体系 AbstractHandlerMethodMapping我们来说说,这边每个类主要的职责 1. AbstractHandlerMapping 准备上下文环境;提供getHandlerInternal钩子;封装拦截器到HandlerExecutionChain 2. AbstractUrlHandlerMapping 实现注册handler的方法供子类使用;实现ge...原创 2018-03-23 16:54:00 · 316 阅读 · 0 评论 -
SpringMVC源码剖析(一)SpringMVC整体架构分析和创建
在此篇文章通过源码分析SpringMVC的创建过程原创 2018-01-02 10:43:24 · 509 阅读 · 0 评论 -
SpringMVC源码剖析(二)SpringMVC是如何处理请求的
本文大概从源码角度展示了SpringMVC是如何处理请求的,提供了大概的主要逻辑,但是并没有具体分析每一步如何去实现,我会在之后对这篇文章进行更新原创 2018-01-03 09:27:08 · 249 阅读 · 0 评论 -
SpringMVC源码剖析(三)9大组件初识
这里首先对SpringMVC中的9大组件做了一个初步的认识,之后会对他们的原理 用法再做介绍原创 2018-01-03 10:40:00 · 400 阅读 · 0 评论 -
SpringMVC源码剖析(四)组件之HandlerMapping
作用根据request找到Handler首先来看一下HandlerMapping的继承体系可以看到HandlerMapping家族成员分成两支一支AbstractHandlerMethodMapping 另一支AbstractUrlHandlerMapping.分析方法我们 使用 器用分析法它们拥有共同的父类AbstractHandlerMapping原创 2018-01-05 09:34:28 · 249 阅读 · 0 评论 -
HandlerMapping:根据request寻找handler
我们知道HandlerMapping的作用是根据request找到handler。 是核心步骤的第一步。原理: 其实现机制简单来说就是维持了一个url到Controller关系的Map结构,其提供的实际功能也是根据request请求来获取具体执行的包含Controller信息的HandlerAdapter。HandlerMapping 接口:接口中主要定义了一个getHandler方法...原创 2018-02-03 16:52:01 · 835 阅读 · 0 评论 -
通过handlermapper寻找handleradapter
在doDispatch中通过getHandlerAdapter寻找到handleradapter/** * Return the HandlerAdapter for this handler object. * @param handler the handler object to find an adapter for * @throws Servlet原创 2018-02-03 17:06:15 · 750 阅读 · 0 评论 -
关于视图渲染
在doDispatch中通过handleradapter进行视图渲染 返回mv/** * This implementation expects the handler to be an {@link HandlerMethod}. */ @Override @Nullable public final ModelAndView handle(H原创 2018-02-03 17:14:54 · 775 阅读 · 0 评论 -
关于HandlerAdapter
这个接口有3个方法supports handler getLastModified HandlerAdapter是具体通过使用Handler的来干活的。 每个HandlerAdapter封装了一种Hanlder的具体使用方法。 HandlerAdapter的子类有AbstractMethodHandler RequestMappingHandlerAdapter HttpReq原创 2018-02-03 18:16:24 · 684 阅读 · 0 评论 -
DispatcherServlet的逻辑处理
在Servlet中会根据动作进行分发 而SpringMVC对于不同的方法没有做特殊处理 而是将程序统一引导到processRequest中/** * Process this request, publishing an event regardless of the outcome. * The actual event handling is performed原创 2018-02-03 18:35:08 · 265 阅读 · 0 评论 -
SpringMVC原理总结
SpringMVC的本质是一个Servlet, 而Servlet的运行需要一个Servlet容器,比如Tomcat.Servlet容器封装了像底层Socket通用而很麻烦的事,让我们开发按照Servlet的接口去做就可以。 SpringMVC提供了一个通用的解决方案不需要写Servlet。只关心核心业务就可以了。Tomcat分为两部分: 连接器和容器 连接器专门处理网络连接相关事情原创 2018-02-03 23:18:25 · 399 阅读 · 0 评论 -
HandlerIntercepetor接口
HandlerInterceptor接口给我们提供了3个方法:(1)preHandle: 在执行controller处理之前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我们返回false则中断执行 (2)postHandle:在执行controller的处理后,在ModelAndView处理前执行 (3)afterCo...原创 2018-03-23 15:00:48 · 842 阅读 · 0 评论 -
HandlerIntecepetor学习
简介 SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。应用场景 1、日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。 2、权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。 3、性能监控:典型的是慢日志。我们常用的就是日志记录,权限检查。如果实现HandlerInter...原创 2018-03-23 15:16:27 · 303 阅读 · 0 评论 -
分析HandlerMapping
HandlerMapping的接口是根据request寻找Handler和Interceptors 在DispatcherServlet的doDispatch方法中实现如下: protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { ...原创 2018-03-23 16:30:40 · 395 阅读 · 0 评论 -
HanlderExcutionChain
//******************************************************** 返回的类型是HandlerExecutionChain HandlerExcutionChain有3个变量//存储的对象是HandlerMethod private final Object handler;//存储的是拦截器数组 @Nullable...原创 2018-03-23 16:31:19 · 229 阅读 · 0 评论 -
HandlerMapping(二) AbstractHandlerMapping
这一节我们来分析HandlerMapping的子类 接下来我们介绍一下它的抽象实现类AbstractHandlerMappingAbstractHandlerMapping中对父类方法的实现如下:/** * Look up a handler for the given request, falling back to the default * handler ...原创 2018-03-23 16:51:15 · 603 阅读 · 0 评论 -
SpringMvc分析总结篇
自己写了SpringMvc源码分析也好长时间了,有点遗忘了发现文章也慢慢变多,现在也是时候该整理下思路,分类下自己写过的一些文章,然后再顺便回顾回顾应用部分最小化配置源码分析篇Springmvc源码分析之整体结构分析Springmvc源码分析之组件初始化部分SpringMvc源码分析之9大组件SpringMvc源码分析之RedirectViewSpringMvc源码分析之View...原创 2018-09-21 14:51:52 · 258 阅读 · 0 评论