Spring Web入门及源码学习
文章平均质量分 66
学习spring Web整个运行流程的相关源码
军伟@
Java开发工程师
展开
-
Spring Web学习-- Spring Session实现原理
这篇博客我们简单介绍一下对Java web 实现Session共享的几种实现方式,及通过分析Spring Session来看看Spring 对Session共享是如何实现的。一、Session 共享实现方式1、通过tomcat的实现机制来实现,简单来说在tomcat容器中它完成了对Session的创建和管理等功能,如果能修改这部分代码就可以实现基于tomcat容器的sessi...原创 2018-08-11 17:39:19 · 2962 阅读 · 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 · 1198 阅读 · 0 评论 -
Spring Security原理学习--核心过滤器Filter(二)
在上一篇博客Spring Security原理学习--简介与示例(一)中已经简单介绍了Spring Security相关的东西, 这篇博客我们介绍一下Spring Security相关的实现机制 。首先Spring Security的认证功能是依赖Filter实现的,当然在认证功能基础上还提供了一些安全的验证等都是依赖Filter来实现完成的,如下截图Spring Security提供了13个功...原创 2018-10-14 15:59:18 · 7418 阅读 · 2 评论 -
Spring Security原理学习--权限校验(四)
在上一篇博客Spring Security原理学习--用户名和密码认证(三)中我们已经了解到Spring Security关于用户名和密码在UsernamePasswordAuthenticationFilter中的认证处理逻辑,接下来我们看看权限的校验处理。 Spring Security权限角色的校验处理是在FilterSecurityInterceptor过滤器中进...原创 2018-10-17 09:30:40 · 4214 阅读 · 0 评论 -
Spring Security原理学习--用户名和密码认证(三)
在上一篇博客Spring Security原理学习--核心过滤器Filter(二)中我们已经了解到Spring Security相关业务处理的Filter,这篇博客我们通过代码完整的将Spring Security登录、验证和退出的流程了解一下。一、登录请求1、Spring Security默认提供了一个登录页面,默认请求地址 GET:http://localhost:8...原创 2018-10-15 22:08:06 · 9560 阅读 · 4 评论 -
Spring Security原理学习--简介与示例(一)
Spring Security原理学习--核心过滤器Filter(二)Spring Security原理学习--用户名和密码认证(三)一、简介中文介绍:https://springcloud.cc/spring-security-zhcn.htmlSpring Security 提供了基于javaEE的企业应有个你软件全面的安全服务。这里特别强调支持使用SPring框架构件的项目,...原创 2018-10-14 14:31:43 · 3878 阅读 · 1 评论 -
SpringMVC--配置FastJSON为JSON处理器
springMVC使用fastJson很简单,在springMVC的配置文件中作如下配置: text/html;charset=UTF-8 appl原创 2017-08-22 12:24:03 · 11153 阅读 · 6 评论 -
springMVC--动态验证码实现
在网站开发过程中我们一般都会为了防止用户连续提交都会提供验证码的功能,简单来说就是生成一个动态图片,在图片中保存一些校验信息,将校验信息放到session中和用户提交的验证码信息进行对比,如果出现错误则要提示验证码错误。提供一个简单实现的demo。@Controller@RequestMapping("/auth")public class AuthCodeController { pr原创 2017-04-01 10:43:49 · 3294 阅读 · 0 评论 -
springMVC通过Filter实现防止xss注入
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。防止XSS攻击简单的预防就是对Request请求中的一些参数去掉一些比较敏感的脚本原创 2017-03-14 20:33:14 · 19723 阅读 · 5 评论 -
springMVC源码分析--FlashMap和FlashMapManager重定向数据保存
在上一篇博客 springMVC源码分析--页面跳转RedirectView(三)中我们看到了在RedirectView跳转时会将跳转之前的请求中的参数保存到fFlashMap中,然后通过FlashManager保存起来。protected void renderMergedOutputModel(Map model, HttpServletRequest request,原创 2017-02-24 20:24:38 · 4961 阅读 · 0 评论 -
springMVC源码分析--页面跳转RedirectView(三)
之前两篇博客springMVC源码分析--视图View(一)和springMVC源码分析--视图AbstractView和InternalResourceView(二)中我们已经简单的介绍了View相关的知识,接下来我们介绍一个比较常用的RedirectView,顾名思义RedirectView是用于页面跳转使用的。跳转的示例:@RequestMapping("/index") public S原创 2017-02-23 17:13:14 · 8620 阅读 · 0 评论 -
springMVC源码分析--视图View(一)
之前的博客springMVC源码分析--HttpMessageConverter数据转化(一)中我们已经介绍了数据返回值的处理,在博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了视图解析器ViewResolver会解析视图生成View对象,接下来我们介绍一下View视图相关的知识。View接口及实现类结构图:标题不同的实现类有不同的视图效果:...原创 2017-02-20 20:57:12 · 2997 阅读 · 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 · 5044 阅读 · 0 评论 -
springMVC源码分析--HttpMessageConverter数据转化(一)
之前的博客我们已经介绍了很多springMVC相关的模块,接下来我们介绍一下springMVC在获取参数和返回结果值方面的处理。虽然在之前的博客老田已经分别介绍了参数处理器和返回值处理器:(1)springMVC参数值处理器 springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)(2)springMVC返回值处理器 springMVC源码分析--H原创 2017-02-16 19:18:26 · 12285 阅读 · 0 评论 -
springMVC源码分析--HttpMessageConverter参数read操作(二)
上一篇博客 springMVC源码分析--HttpMessageConverter数据转化(一)中我们简单介绍了一下HttpMessageConverter接口提供的几个方法,主要有以下几个方法:(1)canRead 是否可以读(2)canWrite 是否可以写(3)read() 读数据(4)write() 写数据接下来我们介绍一下读取数据的处理操作。首先要去重温一下参数处理器需要做的操作spri原创 2017-02-16 20:54:59 · 5920 阅读 · 3 评论 -
springMVC源码分析--HttpMessageConverter写write操作(三)
上一篇博客 springMVC源码分析--HttpMessageConverter参数read操作中我们已经简单介绍了参数值转换的read操作,接下来我们介绍一下返回值的处理操作。同样返回值的操作操作也是在HandlerMethodReturnValueHandler中处理的,可以参考一下老田写的springMVC源码分析--HandlerMethodReturnValueHandler返回值解析原创 2017-02-16 21:16:31 · 3352 阅读 · 0 评论 -
springMVC源码分析--ViewResolver视图解析器(一)
SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。View接口的主要作用是用于处理视图,然后返回给客户端。Spring为我们提供了非常多的视图解原创 2017-01-16 18:48:39 · 4056 阅读 · 0 评论 -
springMVC源码解析--ViewResolverComposite视图解析器集合(二)
上一篇博客 springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可以使用多个视图的,当然就需要配置多个视图解析器了,ViewResolverComposite简单来说就是使用简单的List来保存你配置使用的视图解析器。ViewResolverComposite中定原创 2017-01-16 18:49:29 · 1896 阅读 · 0 评论 -
springMVC源码解析--ViewResolver视图解析器执行(三)
之前两篇博客 springMVC源码分析--ViewResolver视图解析器(一)和 springMVC源码解析--ViewResolverComposite视图解析器集合(二)中我们已经简单介绍了一些ViewResolver的知识,ViewResolver的主要功能就是根据配置的视图解析器实现类来生成一个View对象。接下来我们通过介绍常见InternalResourceViewResolve原创 2017-01-16 18:50:00 · 3249 阅读 · 0 评论 -
springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)
HandlerMethodReturnValueHandler是用于对Controller中函数执行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValueHandler的实现类。接口HandlerMethodReturnValueHandler定义的抽象方法还是比较简单的,源码如下:(1)supportsReturnType用于判断是否支持对返回值的处原创 2017-01-11 19:05:54 · 7357 阅读 · 0 评论 -
springMVC源码分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(二)
在上一篇博客 springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)我们介绍了返回值解析器HandlerMethodReturnValueHandler,接触到了HandlerMethodReturnValueHandlerComposite,简单来说HandlerMethodReturnValueHandlerComposite其实就是sp原创 2017-01-11 19:06:27 · 2066 阅读 · 0 评论 -
springMVC源码分析--ViewNameMethodReturnValueHandler返回值处理器(三)
之前两篇博客springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)和 springMVC源码分析--HandlerMethodReturnValueHandlerComposite返回值解析器集合(二)我们分别介绍了返回值处理器相关的东西,接下来我们选取一个简单的实现类ViewNameMethodReturnValueHandler来简单介绍原创 2017-01-11 19:06:42 · 1773 阅读 · 2 评论 -
springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)
HandlerMethodArgumentResolver是用来为处理器解析参数的,主要用在HandlerMethod中,每个Resolver对应一种类型的参数,其实现类特别的多。HandlerMethodArgumentResolver接口及其实现类如下:HandlerMethodArgumentResolver的接口定义如下:(1)supportsParameter 用于判断是否支持对某种参数原创 2017-01-10 18:24:37 · 6478 阅读 · 0 评论 -
springMVC源码解析--HandlerMethodArgumentResolverComposite参数解析器集合(二)
上一篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)中我们已经介绍了参数解析相关的东西,并且也提到了HandlerMethodArgumentResolverComposite,其简单来说就是所有的参数解析器的链表,保存了springMVC提供的所有的参数解析器,采用职责链的模式来完成参数解析器的查找,并完成参数解析生成目标对象。完整源原创 2017-01-10 18:25:11 · 3741 阅读 · 3 评论 -
springMVC源码分析--RequestParamMethodArgumentResolver参数解析器(三)
之前两篇博客springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)和 springMVC源码解析--HandlerMethodArgumentResolverComposite参数解析器集合(二)我们对参数解析器有一些了解了,接下来这篇博客我们选取一个HandlerMethodArgumentResolver的具体实现类RequestParamMe原创 2017-01-10 18:25:43 · 10071 阅读 · 1 评论 -
springMVC源码分析--RequestToViewNameTranslator请求到视图名称的转换
RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request获取viewName。RequestToViewNameTranslator提供的实现类只有一个DefaultRequestToViewNameTranslator。接口RequestToViewNameTranslator中定义的如下:提供了getViewName抽象方法,其实就是根据r原创 2017-01-09 18:38:30 · 3656 阅读 · 0 评论 -
springMVC源码--Controller控制器
springMVC给我们提供Controller控制器,用来实现我们的逻辑处理,在Controller接口中定义的方法也是比较简单的,如下:Controller接口及实现类:Controller有多个实现类,这些类就不做过多解释了,因为我们如果处理自己的业务还是需要重写他的handleRequest方法的。Controller接口如下:public interface Controller {原创 2017-01-09 18:39:19 · 2324 阅读 · 0 评论 -
springMVC源码分析--ModelFactory
ModelFactory是用来维护Model的,具体包含两个功能(1)初始化Model(2)处理器执行后将Model中相应的参数更新到SessionAttributes中1、初始化Model其实是对@ModelAttribute和@SessionAttribute注解的执行,执行的操作是在initModel中,包括获取@SessionAttribute注解的参数的值以及被@ModelAttribu原创 2017-01-04 18:43:50 · 1768 阅读 · 0 评论 -
springMVC源码分析--ModelAndViewContainer和ModelMap
ModelAndViewContainer主要是用来返回Model对象的,在ModelAndViewContainer中有defaultModel和redirectModel,defaultModel是默认使用的Model,后者用于传递redirect时的参数,我们在处理中使用了Model或ModelMap时,ArgumentResolver会传入defaultModel,它是BindingAwa原创 2017-01-04 18:43:24 · 3277 阅读 · 0 评论 -
springMVC源码分析--@SessionAttribute用法及原理解析SessionAttributesHandler和SessionAttributeStore
@SessionAttribute作用于处理器类上,用于在多个请求之间传递参数,类似于Session的Attribute,但不完全一样,一般来说@SessionAttribute设置的参数只用于暂时的传递,而不是长期的保存,长期保存的数据还是要放到Session中。通过@SessionAttribute注解设置的参数有3类用法:(1)在视图中通过request.getAttribute或sessi原创 2016-12-30 20:53:50 · 10463 阅读 · 1 评论 -
springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod
在之前一篇博客中 springMVC源码分析--RequestMappingHandlerAdapter(五)我们已经简单的介绍到具体请求访问的执行某个Controller中的方法是在RequestMappingHandlerAdapter的invokeHandlerMethod方法中,其实具体执行的地方是invocableMethod.invokeAndHandle(webRequest, ma原创 2016-12-30 18:59:38 · 8082 阅读 · 0 评论 -
springMVC源码分析--@ModelAttribute使用及运行原理
这一篇博客我们简单的介绍一下ModelAttribute的使用和运行原理。1、首先@ModelAttribute是使用在方法或者上的,当使用在方法上时其作用于本身所在的Controller,在访问Controller中的所有请求时都会执行到@ModelAttribute所注解的方法。@Controllerpublic class ModelAttributeController { @Mo原创 2016-12-29 16:06:16 · 5194 阅读 · 1 评论 -
springMVC源码分析--HandlerAdapter(一)
HandlerAdapter的功能实际就是执行我们的具体的Controller、Servlet或者HttpRequestHandler中的方法。类结构如下:HandlerAdapter的接口中定义了三个方法:(1)boolean supports(Object handler); 判断是否支持传入的Handler(2)ModelAndView handle(HttpServletRequest r原创 2016-12-23 19:41:30 · 3588 阅读 · 0 评论 -
springMVC源码分析--SimpleServletHandlerAdapter(二)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接下来我们详细介绍一下其实现类SimpleServletHandlerAdapter。原创 2016-12-23 19:53:51 · 2529 阅读 · 0 评论 -
springMVC源码分析--SimpleControllerHandlerAdapter(三)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接下来我们详细介绍一下其实现类SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter是Controller实现类的适配器类,其本质是执原创 2016-12-26 09:51:35 · 6817 阅读 · 3 评论 -
springMVC源码分析--HttpRequestHandlerAdapter(四)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接下来我们详细介绍一下其实现类HttpRequestHandlerAdapter,同前几篇博客一样HttpRequestHandlerAdapter的本质还是调用HttpRequestHandler的H原创 2016-12-26 09:52:09 · 5312 阅读 · 0 评论 -
springMVC源码分析--RequestMappingHandlerAdapter(五)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接下来我们详细介绍一下其实现类AbstractHandlerMethodAdapter和RequestMappingHandlerAdapter,其中AbstractHandlerMethodAdapt原创 2016-12-27 14:25:06 · 10480 阅读 · 0 评论 -
springMVC源码分析--HandlerMethod
在之前的博客中我们已经接触过HandlerMethod,接下来我们简单介绍一下HandlerMethod,简单来说HandlerMethod包含的信息包括类、方法和参数的一个信息类,通过其两个构造函数我们就可以了解其功能,对应着springMVC的Controller来说就是某个url对应的某个Controller执行的方法。/** * Create an instance from a be原创 2016-12-21 19:09:50 · 11674 阅读 · 2 评论 -
springMVC源码分析--HandlerMapping(一)
HandlerMapping的工作就是为每个请求找到合适的请求找到一个处理器handler,其实现机制简单来说就是维持了一个url到Controller关系的Map结构,其提供的实际功能也是根据request请求来获取具体执行的包含Controller信息的HandlerAdapter。HandlerMapping接口及实现类如下:HandlerMapping 接口:接口中主要定义了一个getHa原创 2016-12-19 19:29:38 · 3315 阅读 · 0 评论 -
springMVC源码分析--AbstractHandlerMapping(二)
上一篇博客 springMVC源码分析--HandlerMapping(一)中我们简单的介绍了HandlerMapping,接下来我们介绍一下它的抽象实现类AbstractHandlerMappingHandlerMapping中定义了方法getHandler(HttpServletRequest request),AbstractHandlerMapping中的实现如下://获得一个Handle原创 2016-12-19 19:54:29 · 3399 阅读 · 4 评论