spring Web入门及源码学习
文章平均质量分 66
军伟@
Java开发工程师
展开
-
Spring Web 学习 -- DeferredResult 长连接异步返回
最近在学习有个配置中心(nacos 和 apollo),配置中心在配置变更时通过 http 长连接的方式进行通知。(1)配置客户端定时向配置中心发送请求获取最新配置(apollo客户端会像服务端发送长轮训http请求,超时时间60秒,当超时后返回客户端一个304 httpstatus,表明配置没有变更,客户端继续这个步骤重复发起请求,当有发布配置的时候,服务端会调用DeferredResult...原创 2019-07-07 14:46:04 · 3436 阅读 · 0 评论 -
springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)
HandlerMethodReturnValueHandler是用于对Controller中函数执行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValueHandler的实现类。接口HandlerMethodReturnValueHandler定义的抽象方法还是比较简单的,源码如下:(1)supportsReturnType用于判断是否支持对返回值的处原创 2017-01-11 19:05:54 · 7341 阅读 · 0 评论 -
springMVC源码解析--ViewResolver视图解析器执行(三)
之前两篇博客 springMVC源码分析--ViewResolver视图解析器(一)和 springMVC源码解析--ViewResolverComposite视图解析器集合(二)中我们已经简单介绍了一些ViewResolver的知识,ViewResolver的主要功能就是根据配置的视图解析器实现类来生成一个View对象。接下来我们通过介绍常见InternalResourceViewResolve原创 2017-01-16 18:50:00 · 3221 阅读 · 0 评论 -
springMVC源码解析--ViewResolverComposite视图解析器集合(二)
上一篇博客 springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可以使用多个视图的,当然就需要配置多个视图解析器了,ViewResolverComposite简单来说就是使用简单的List来保存你配置使用的视图解析器。ViewResolverComposite中定原创 2017-01-16 18:49:29 · 1865 阅读 · 0 评论 -
springMVC源码分析--ViewNameMethodReturnValueHandler返回值处理器(三)
之前两篇博客springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)和 springMVC源码分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(二)我们分别介绍了返回值处理器相关的东西,接下来我们选取一个简单的实现类ViewNameMethodReturnValueHandler来简单介绍原创 2017-01-11 19:06:42 · 1741 阅读 · 2 评论 -
springMVC源码分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(二)
在上一篇博客 springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)我们介绍了返回值解析器HandlerMethodReturnValueHandler,接触到了HandlerMethodReturnValueHandlerComposite,简单来说HandlerMethodReturnValueHandlerComposite其实就是sp原创 2017-01-11 19:06:27 · 2056 阅读 · 0 评论 -
springMVC源码分析--RequestParamMethodArgumentResolver参数解析器(三)
之前两篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)和 springMVC源码解析--HandlerMethodArgumentResolverComposite参数解析器集合(二)我们对参数解析器有一些了解了,接下来这篇博客我们选取一个HandlerMethodArgumentResolver的具体实现类RequestParamMe原创 2017-01-10 18:25:43 · 10057 阅读 · 1 评论 -
springMVC源码解析--HandlerMethodArgumentResolverComposite参数解析器集合(二)
上一篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)中我们已经介绍了参数解析相关的东西,并且也提到了HandlerMethodArgumentResolverComposite,其简单来说就是所有的参数解析器的链表,保存了springMVC提供的所有的参数解析器,采用职责链的模式来完成参数解析器的查找,并完成参数解析生成目标对象。完整源原创 2017-01-10 18:25:11 · 3714 阅读 · 3 评论 -
SpringMVC提供两种校验机制
本文不讲如何使用SpringMVC提供的两种校验机制,只是简单的说明一下其中的差别而已:1、创建一个Bean,在Bean的属性中添加校验信息,通过配置LocalValidatorFactoryBean可以实现对Bean的校验,在Controller的具体函数中通过使用@Valid注解就可以实现自动校验,最后校验的结果会被放置到BindingResult中,这样就可以获取校验信息,返回校验结果,原创 2016-08-04 16:01:29 · 2080 阅读 · 0 评论 -
springMVC源码--Controller控制器
springMVC给我们提供Controller控制器,用来实现我们的逻辑处理,在Controller接口中定义的方法也是比较简单的,如下:Controller接口及实现类:Controller有多个实现类,这些类就不做过多解释了,因为我们如果处理自己的业务还是需要重写他的handleRequest方法的。Controller接口如下:public interface Controller {原创 2017-01-09 18:39:19 · 2309 阅读 · 0 评论 -
springMVC源码分析--RequestToViewNameTranslator请求到视图名称的转换
RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request获取viewName。RequestToViewNameTranslator提供的实现类只有一个DefaultRequestToViewNameTranslator。接口RequestToViewNameTranslator中定义的如下:提供了getViewName抽象方法,其实就是根据r原创 2017-01-09 18:38:30 · 3589 阅读 · 0 评论 -
springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod
在之前一篇博客中 springMVC源码分析--RequestMappingHandlerAdapter(五)我们已经简单的介绍到具体请求访问的执行某个Controller中的方法是在RequestMappingHandlerAdapter的invokeHandlerMethod方法中,其实具体执行的地方是invocableMethod.invokeAndHandle(webRequest, ma原创 2016-12-30 18:59:38 · 8071 阅读 · 0 评论 -
springMVC源码分析--ControllerClassNameHandlerMapping(九)
在上一篇博客springMVC源码分析--AbstractControllerUrlHandlerMapping(六)中我们介绍到AbstractControllerUrlHandlerMapping定义了抽象方法buildUrlsForHandler,接下来我们看看在其子类ControllerClassNameHandlerMapping中的实现。ControllerClassNameHandl原创 2016-12-20 14:45:08 · 1295 阅读 · 0 评论 -
springMVC源码分析--ControllerBeanNameHandlerMapping(八)
在上一篇博客springMVC源码分析--AbstractControllerUrlHandlerMapping(六)中我们介绍到AbstractControllerUrlHandlerMapping定义了抽象方法buildUrlsForHandler,接下来我们看看在其子类ControllerBeanNameHandlerMapping中的实现。ControllerBeanNameHandler原创 2016-12-20 14:33:56 · 1777 阅读 · 0 评论 -
springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)
HandlerMethodArgumentResolver是用来为处理器解析参数的,主要用在HandlerMethod中,每个Resolver对应一种类型的参数,其实现类特别的多。HandlerMethodArgumentResolver接口及其实现类如下:HandlerMethodArgumentResolver的接口定义如下:(1)supportsParameter 用于判断是否支持对某种参数原创 2017-01-10 18:24:37 · 6463 阅读 · 0 评论 -
springMVC源码分析--HttpMessageConverter数据转化(一)
之前的博客我们已经介绍了很多springMVC相关的模块,接下来我们介绍一下springMVC在获取参数和返回结果值方面的处理。虽然在之前的博客老田已经分别介绍了参数处理器和返回值处理器:(1)springMVC参数值处理器 springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)(2)springMVC返回值处理器 springMVC源码分析--H原创 2017-02-16 19:18:26 · 12265 阅读 · 0 评论 -
springMVC源码分析--HttpMessageConverter写write操作(三)
上一篇博客 springMVC源码分析--HttpMessageConverter参数read操作中我们已经简单介绍了参数值转换的read操作,接下来我们介绍一下返回值的处理操作。同样返回值的操作操作也是在HandlerMethodReturnValueHandler中处理的,可以参考一下老田写的springMVC源码分析--HandlerMethodReturnValueHandler返回值解析原创 2017-02-16 21:16:31 · 3343 阅读 · 0 评论 -
Spring Web学习-- Spring Session实现原理
这篇博客我们简单介绍一下对Java web 实现Session共享的几种实现方式,及通过分析Spring Session来看看Spring 对Session共享是如何实现的。一、Session 共享实现方式1、通过tomcat的实现机制来实现,简单来说在tomcat容器中它完成了对Session的创建和管理等功能,如果能修改这部分代码就可以实现基于tomcat容器的sessi...原创 2018-08-11 17:39:19 · 2944 阅读 · 0 评论 -
Spring Web学习--DelegatingFilterProxy 代理Filter
Spring web在设计的时候考虑到某些功能的实现是通过Filter来拦截进行实现的,如果直接的简单的实现几个Filter好像也不是不可以(平时我们就是这么用的),但是Spring框架最核心的是IOC容器,和Spring框架最好的实现就是将要实现的Filter功能注册到IOC容器的一个Bean,这样就可以和Spring IOC容器进行完美的融合,所以Spring Web设计了Del...原创 2018-08-11 14:42:33 · 1188 阅读 · 0 评论 -
springMVC源码分析--容器初始化(一)ContextLoaderListener
在spring Web中,需要初始化IOC容器,用于存放我们注入的各种对象。当tomcat启动时首先会初始化一个web对应的IOC容器,用于初始化和注入各种我们在web运行过程中需要的对象。当tomcat启动的时候是如何初始化IOC容器的,我们先看一下在web.xml中经常看到的配置: contextConfigLocation classpath:applicationContex原创 2016-10-10 19:12:48 · 12280 阅读 · 5 评论 -
SpringMVC--配置FastJSON为JSON处理器
springMVC使用fastJson很简单,在springMVC的配置文件中作如下配置: text/html;charset=UTF-8 appl原创 2017-08-22 12:24:03 · 11139 阅读 · 6 评论 -
springMVC--动态验证码实现
在网站开发过程中我们一般都会为了防止用户连续提交都会提供验证码的功能,简单来说就是生成一个动态图片,在图片中保存一些校验信息,将校验信息放到session中和用户提交的验证码信息进行对比,如果出现错误则要提示验证码错误。提供一个简单实现的demo。@Controller@RequestMapping("/auth")public class AuthCodeController { pr原创 2017-04-01 10:43:49 · 3284 阅读 · 0 评论 -
springMVC通过Filter实现防止xss注入
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。防止XSS攻击简单的预防就是对Request请求中的一些参数去掉一些比较敏感的脚本原创 2017-03-14 20:33:14 · 19647 阅读 · 5 评论 -
springMVC源码分析--FlashMap和FlashMapManager重定向数据保存
在上一篇博客 springMVC源码分析--页面跳转RedirectView(三)中我们看到了在RedirectView跳转时会将跳转之前的请求中的参数保存到fFlashMap中,然后通过FlashManager保存起来。protected void renderMergedOutputModel(Map model, HttpServletRequest request,原创 2017-02-24 20:24:38 · 4940 阅读 · 0 评论 -
springMVC源码分析--页面跳转RedirectView(三)
之前两篇博客springMVC源码分析--视图View(一)和springMVC源码分析--视图AbstractView和InternalResourceView(二)中我们已经简单的介绍了View相关的知识,接下来我们介绍一个比较常用的RedirectView,顾名思义RedirectView是用于页面跳转使用的。跳转的示例:@RequestMapping("/index") public S原创 2017-02-23 17:13:14 · 8588 阅读 · 0 评论 -
springMVC源码分析--视图AbstractView和InternalResourceView(二)
上一篇博客 springMVC源码分析--视图View(一)中我们介绍了简单介绍了View的结构实现及运行流程,接下来我们介绍一下View的实现类做的处理操作。AbstractView实现了render方法,主要做的操作是将model中的参数和request中的参数全部都放到Request中,然后就转发Request就可以了。 @Override public void render(Map m原创 2017-02-20 20:57:37 · 4990 阅读 · 0 评论 -
springMVC源码分析--视图View(一)
之前的博客springMVC源码分析--HttpMessageConverter数据转化(一)中我们已经介绍了数据返回值的处理,在博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了视图解析器ViewResolver会解析视图生成View对象,接下来我们介绍一下View视图相关的知识。View接口及实现类结构图:标题不同的实现类有不同的视图效果:...原创 2017-02-20 20:57:12 · 2977 阅读 · 0 评论 -
springMVC源码分析--HandlerInterceptor拦截器调用过程(二)
在上一篇博客springMVC源码分析--HandlerInterceptor拦截器(一)中我们介绍了HandlerInterceptor拦截器相关的内容,了解到了HandlerInterceptor提供的三个接口方法:(1)preHandle: 在执行controller处理之前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我原创 2016-12-09 17:23:21 · 9302 阅读 · 0 评论 -
springMVC源码分析--ViewResolver视图解析器(一)
SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。View接口的主要作用是用于处理视图,然后返回给客户端。Spring为我们提供了非常多的视图解原创 2017-01-16 18:48:39 · 4044 阅读 · 0 评论 -
springMVC源码分析--HttpMessageConverter参数read操作(二)
上一篇博客 springMVC源码分析--HttpMessageConverter数据转化(一)中我们简单介绍了一下HttpMessageConverter接口提供的几个方法,主要有以下几个方法:(1)canRead 是否可以读(2)canWrite 是否可以写(3)read() 读数据(4)write() 写数据接下来我们介绍一下读取数据的处理操作。首先要去重温一下参数处理器需要做的操作spri原创 2017-02-16 20:54:59 · 5909 阅读 · 3 评论 -
springMVC源码分析--BeanNameUrlHandlerMapping(七)
在上一篇博客 springMVC源码分析--AbstractDetectingUrlHandlerMapping(五)中我们介绍了AbstractUrlHandlerMapping,其定义了一个抽象函数//抽象方法,子类中实现 protected abstract String[] determineUrlsForHandler(String beanName); 在AbstractU原创 2016-12-20 14:23:09 · 1614 阅读 · 0 评论 -
springMVC源码分析--AbstractControllerUrlHandlerMapping(六)
上一篇博客springMVC源码分析--AbstractDetectingUrlHandlerMapping(五)中我们介绍了AbstractDetectingUrlHandlerMapping,其定义了一个抽象方法determineUrlsForHandler在子类AbstractControllerUrlHandlerMapping中实现。子类中AbstractControllerUrlHan原创 2016-12-20 12:24:45 · 1651 阅读 · 0 评论 -
springMVC源码分析--AbstractDetectingUrlHandlerMapping(五)
上一篇博客springMVC源码分析--AbstractUrlHandlerMapping(三)中我们介绍了AbstractUrlHandlerMapping,主要介绍了一个handlerMap的url和Handler的关系存取的过程。在上一博客中我们介绍了handlerMap有一个注册url和Handler关系的注册函数,这个函数的调用是在实现类AbstractDetectingUrlHandl原创 2016-12-20 11:19:55 · 1717 阅读 · 0 评论 -
springMVC源码分析--AbstractHandlerMethodMapping获取url和HandlerMethod对应关系(十)
在之前的博客 springMVC源码分析--AbstractHandlerMapping(二)中我们介绍了AbstractHandlerMethodMapping的父类AbstractHandlerMapping,其定义了抽象方法getHandlerInternal(HttpServletRequest request),我看一下其在AbstractHandlerMethodMapping中的实现原创 2016-12-21 18:33:59 · 6097 阅读 · 2 评论 -
springMVC源码分析--异常处理机制HandlerExceptionResolver简单示例(一)
springMVC对Controller执行过程中出现的异常提供了统一的处理机制,其实这种处理机制也简单,只要抛出的异常在DispatcherServlet中都会进行捕获,这样就可以统一的对异常进行处理。 springMVC提供了一个HandlerExceptionResolver接口,其定义方法如下:public interface HandlerExceptionResolver原创 2016-12-17 20:04:43 · 2981 阅读 · 0 评论 -
SpringMVC源码分析--文件上传
SpringMVC提供了文件上传的功能,接下来我们就简单了解一下SpringMVC文件上传的开发及大致过程。首先需要在springMVC的配置文件中配置文件上传解析器 springMVC的文件上传需要commons-fileupload 包的支持,需要引入。 commons-fileupload commons-fileupload 1.3.2 文件上传的原创 2016-12-17 16:34:10 · 1707 阅读 · 0 评论 -
springMVC源码分析--拦截器HandlerExecutionChain(三)
上一篇博客springMVC源码分析--HandlerInterceptor拦截器调用过程(二)中我们介绍了HandlerInterceptor的执行调用地方,最终HandlerInterceptor调用的地方是在HandlerExecutionChain中,接下来我们就介绍一下HandlerExecutionChain。HandlerExecutionChain有3个变量:Object hand原创 2016-12-09 19:13:05 · 11880 阅读 · 0 评论 -
springMVC源码分析--DispatcherServlet请求获取及处理
在之前的博客 springMVC源码分析--容器初始化(二)DispatcherServlet中我们介绍过DispatcherServlet,是在容器初始化过程中出现的,我们之前也说过DispatcherServlet其实就是一个HttpServlet,其实他是HttpServlet的子类,所以它和普通的HttpServlet有同样的配置: springmvc原创 2016-12-08 20:38:05 · 5118 阅读 · 0 评论 -
springMVC源码分析--HandlerInterceptor拦截器(一)
对SpringMVC有所了解的人肯定接触过HandlerInterceptor拦截器,HandlerInterceptor接口给我们提供了3个方法:(1)preHandle: 在执行controller处理之前执行,返回值为boolean ,返回值为true时接着执行postHandle和afterCompletion,如果我们返回false则中断执行(2)postHandle:在执行contro原创 2016-12-08 20:58:17 · 9488 阅读 · 0 评论 -
springMVC源码分析--国际化实现Session和Cookie(二)
上一篇博客 springMVC源码分析--国际化LocaleResolver(一)中我们介绍了springMVC提供的国际化的解决方案,接下来我们根据springMVC提供的解决方案来简单的实现一个多语言的支持。一、基于Session的国际化实现基于Session的国际化实现其实说来也简单,就是在Session中保存语言信息Locale,这样springMVC会从我们提供的多语言配置文件中原创 2016-10-25 22:07:00 · 4896 阅读 · 2 评论