Spring Web
文章平均质量分 67
安迪源文
小步快走
展开
-
Spring MVC : 控制器方法处理请求的过程分析 - 0. 概述
Spring MVC中,一般来讲,控制器指的是开发人员使用了注解@Controller这样的类,而控制器方法,是控制器类中使用了注解@RequestMapping的那些方法。控制器方法能处理哪些请求,就是通过这些@RequestMapping注解信息来定义的,DispatcherServlet会把这些信息加载保存到一个RequestMappingHandlerMapping对象中,当相应的请求到达...原创 2019-08-17 10:11:27 · 741 阅读 · 0 评论 -
Spring Security Web : DefaultHttpFirewall HTTP防火墙(缺省模式)
概述功能介绍DefaultHttpFirewall是Spring Security Web提供的一个HTTP防火墙(对应概念模型接口HttpFirewall)实现。该实现是所谓的缺省实现,但实际上Spring Security Web缺省使用的并不是DefaultHttpFirewall,而是严格模式的StrictHttpFirewall。其原因主要是StrictHttpFirewall对安全...原创 2019-05-24 18:52:03 · 3133 阅读 · 1 评论 -
Spring Security Web : SecurityFilterChain 安全过滤器概念模型
SecurityFilterChain,字面意思"安全过滤器链",是Spring Security Web对匹配特定HTTP请求的一组安全过滤器的抽象建模。这样的一个对象在配置阶段用于配置FilterChainProxy,而FilterChainProxy在请求到达时会使用所持有的某个SecurityFilterChain判断该请求是否匹配该SecurityFilterChain,如果匹配的话,该...原创 2019-05-16 08:45:00 · 6827 阅读 · 0 评论 -
Spring Boot Web Servlet : DelegatingFilterProxyRegistrationBean
DelegatingFilterProxyRegistrationBean是Spring Boot提供的针对Servlet 3.0+ Web的一个注册器Bean(RegistrationBean)。它的作用是向Servlet容器注册一个Servlet Filter,实现类为DelegatingFilterProxy。该Filter DelegatingFilterProxy虽然实现了Filter接...原创 2019-05-21 09:02:57 · 2523 阅读 · 0 评论 -
Spring Boot Web Servlet : AbstractFilterRegistrationBean
Spring Boot提供的用于向Servlet容器注册Filter的类的抽象基类,实现了接口ServletContextInitializer。适用于Servlet 3.0 +。对于该抽象基类,Spring Boot提供了两个实现类:FilterRegistrationBean注册一个Filter对象到Servlet容器。DelegatingFilterProxyRegistrat...原创 2019-05-20 09:35:27 · 1318 阅读 · 0 评论 -
Spring Web : DelegatingFilterProxy
这是一个过滤器对象,其实是一个代理。构造该过滤器对象时,通过名称或者对象方式指定一个Filter bean作为目标代理对象。最终对该过滤器对象的过滤操作的调用,都最终被委托给它所代理的Filter bean。比如使用Spring Security在Spring Web应用中时,Sprng Security安全过滤器就是通过DelegatingFilterProxy来进行代理的。具体地讲,容器启动...原创 2019-05-20 00:09:38 · 579 阅读 · 0 评论 -
Spring 概念模型 : CacheControl
Spring对HTTP缓存机制提供了支持,使用类CacheControl概念建模HTTP缓存机制中的Cache-Control响应头部。类CacheControl其实是一个链式构建器(builder),它接收使用者的各种参数,用于最终生成一个Cache-Control响应头部的值字符串。其用法如下例子所示 :CacheControl cc = CacheControl.maxAge(1, T...原创 2019-04-24 20:52:38 · 1010 阅读 · 0 评论 -
Springboot + WebJars + React : HelloWorld 项目
作为Java程序员,某些情况下,我们需要React和ES6严谨并且快速地表达一些原型思想。这种情况下,全套的类似npm+webpack这种工具栈略显厚重,完全使用原生Javascript或者jQuery表达逻辑又显得过于底层和零碎。这个时候,我们可以考虑使用Springboot + WebJars + React。有如下好处 :目标web应用可以以jar包方式独立部署和运行;使用WebJar...原创 2019-04-19 09:25:43 · 1087 阅读 · 3 评论 -
Spring Web : 内容协商管理器 ContentNegotiationManager
ContentNegotiationManager是Spring Web一个重要的工具类,用于判断一个请求的媒体类型MediaType列表。具体的做法是委托给它所维护的一组ContentNegotiationStrategy实例。实际上它自身也实现了接口ContentNegotiationStrategy,使用者可以直接将它作为一个ContentNegotiationStrategy使用。另外,...原创 2019-04-28 08:59:59 · 2152 阅读 · 0 评论 -
Spring Web : 策略接口 MediaTypeFileExtensionResolver
MediaTypeFileExtensionResolver 是Spring Web的策略接口,所定义的策略对象用于从MediaType 推断文件扩展名。例子 : 如果MediaType是application/json,则文件扩展名为json 。源代码package org.springframework.web.accept;import java.util.List;imp...原创 2019-04-27 18:19:52 · 454 阅读 · 0 评论 -
Spring Web : 策略接口 ContentNegotiationStrategy
ContentNegotiationStrategy是Spring Web的策略接口,所定义的策略对象用于从请求对象中的各种信息判断该请求的MediaType。源代码package org.springframework.web.accept;import java.util.Collections;import java.util.List;import org.springfra...原创 2019-04-27 17:51:59 · 984 阅读 · 0 评论 -
Spring Web HTTP缓存支持系列2: 支持概述
通过上篇文章的分析,我们不难看出,HTTP缓存机制集中体现在以下几个方面 :Cache-Control 头部验证器头部强验证器头部 ETag/If-None-Match弱验证器头部 Last-Modified/If-Modified-Since实际上,Spring MVC对以上这几个方面都有支持,在接下来的系列文章中,我们将逐一讲解Spring MVC对以上HTTP缓存机制几...原创 2019-04-22 08:20:34 · 428 阅读 · 0 评论 -
Spring Web HTTP缓存支持系列1: HTTP缓存机制简介
在介绍Spring MVC对HTTP缓存机制的支持之前,我们有必要了解一下HTTP都有哪些缓存机制,然后再看Spring MVC对它们提供了什么样的支持,这样你才能更好地理解和掌握这方面的知识点。1.HTTP缓存类型简单来讲,HTTP缓存机制可以分为如下几类 :私有浏览器缓存 (Private Cache)仅供浏览器用户私有的缓存机制,一般指的就是浏览器缓存机制。这种缓存主要目的是避免...原创 2019-04-17 20:44:05 · 700 阅读 · 0 评论 -
Spring Web HTTP缓存支持系列3: 对 Cache-Control头部的支持
为了支持HTTP缓存机制Cache-Control头部,Spring MVC提供了如下支持 :使用CacheControl概念建模Cache-Control针对控制器方法的Cache-Control响应头部设置针对静态资源的Cache-Control响应头部设置CacheControl类CacheControl其实是一个链式构建器(builder),它接收使用者的各种参数,用于最终生...原创 2019-04-24 22:19:34 · 2696 阅读 · 0 评论 -
Spring Web HTTP缓存支持系列4: WebRequest#checkNotModified支持验证器机制
为了支持HTTP缓存机制强/弱验证器机制,Spring MVC提供了WebRequest#checkNotModified方法供控制器方法使用。典型用法举例如下 : @RequestMapping(value = "/document", method = RequestMethod.GET) public String getDocument(ServletWebRequest...原创 2019-04-25 21:37:57 · 1118 阅读 · 0 评论 -
Spring Boot Servlet : ServletContextInitializer
概述功能介绍Spring Boot提供的在Servlet 3.0+环境中用于程序化配置ServletContext的接口。该接口ServletContextInitializer主要被RegistrationBean实现用于往ServletContext容器中注册Servlet,Filter或者EventListener。这些ServletContextInitializer的设计目的主要是用...原创 2019-05-22 09:58:25 · 5617 阅读 · 5 评论 -
Spring Security Web : FirewalledResponse 经过防火墙加强安全的响应
概述功能介绍FirewalledResponse是Spring Security Web提供的一个HttpServletResponse实现,是一个带有防火墙增强安全能力的HttpServletResponse实现,被HttpFirewall对象用于对一个HttpServletResponse进行安全增强的包装器。通过FirewalledResponse的包装,它对HttpServletRe...原创 2019-05-26 10:26:31 · 2428 阅读 · 0 评论 -
Spring Web : AbstractNamedValueMethodArgumentResolver 命名值方法参数解析器
概述Spring Web使用AbstractNamedValueMethodArgumentResolver抽象命名值(named value)控制器方法参数解析的逻辑。像是一般意义上我们所说的请求参数,请求头部,URL路径变量这种命名了的参数,都可以称作"命名值"(named value)。AbstractNamedValueMethodArgumentResolver是一个抽象类,它实现了...原创 2019-08-18 13:27:15 · 2515 阅读 · 0 评论 -
Spring Web : HandlerMethodReturnValueHandler
概述HandlerMethodReturnValueHandler是Spring Web提供的一个策略接口,该类对象用于处理控制器方法的返回值。该接口定义了两个方法 :boolean supportsReturnType(MethodParameter returnType)检测该返回值是否被支持,通常是根据返回值的类型或者注解来判断;只有被支持的返回值类型才能被该HandlerMeth...原创 2019-08-20 17:40:19 · 310 阅读 · 0 评论 -
Spring Web : 工具 ExceptionHandlerMethodResolver
概述从指定的类及其所有超类(super class)中找出其中使用了注解@ExceptionHandler的方法,根据这些注解信息建立异常和方法之间的映射关系,这些方法可以被称作异常处理方法,然后这些信息被使用者用于根据异常对象获取相应的异常处理方法。这其中,从类中找出使用了注解@ExceptionHandler的方法,并建立异常/方法映射这一逻辑,实现在构造函数中。而其他对外提供的功能是 :...原创 2019-08-23 17:15:22 · 507 阅读 · 0 评论 -
Spring Web : HandlerMethodReturnValueHandler 实现类清单
jar包org.springframework:spring-web:5.1.5.RELEASEjava包org.springframework.web.method.annotationMapMethodProcessor – Map类型返回值ModelAttributeMethodProcessor – 方法使用注解@ModelAttribute时的返回值,或者为非简单类型的返回值...原创 2019-08-19 16:31:35 · 315 阅读 · 0 评论 -
Spring Web : 概念模型 ModelAndViewContainer
概述ModelAndViewContainer是Spring Web提供的一个持有器工具,用于记录一个控制器方法调用过程中HandlerMethodArgumentResolver/HandlerMethodReturnValueHandler的有关决定。这些决定主要通过ModelAndViewContainer的如下实例属性来表示 :requestHandled标记请求是否已经被处理完...原创 2019-08-18 23:00:39 · 982 阅读 · 0 评论 -
Spring MVC : 控制器方法处理请求的过程分析 - 3. 控制器方法参数值绑定 HandlerMethodArgumentResolver
本系列文章的上一篇 : Spring MVC : 控制器方法处理请求的过程分析 - 2. 请求参数的获取在本系列文章的上一篇中,我们分析了请求参数获取的主流程,经过该主流程,从请求上下文中分析出了控制器方法执行所需要的参数值列表,但是该过程中非要关键的一个环节,也就是通过this.resolvers解析每个参数的详情,我们并没有展开,到目前来讲,这一步对我们来讲仍然是黑盒子。在这篇文章中,我...原创 2019-08-18 22:34:18 · 417 阅读 · 0 评论 -
Spring Boot 自动配置 : HttpEncodingAutoConfiguration
概述自动配置类HttpEncodingAutoConfiguration针对Spring Servlet Web应用,在配置参数spring.http.encoding.enabled不存在或者设置为true时确保bean CharacterEncodingFilter characterEncodingFilter的存在。它的配置过程会利用前缀为spring.http的配置参数项。HttpE...原创 2019-07-07 22:43:04 · 1373 阅读 · 0 评论 -
Spring Boot : Servlet Web 相关的自动配置
ServletWebServerFactoryAutoConfigurationDispatcherServletAutoConfigurationHttpEncodingAutoConfigurationMultipartAutoConfigurationWebMvcAutoConfigurationErrorMvcAutoConfigurationHttpMessageConve...原创 2019-07-07 18:33:55 · 284 阅读 · 0 评论 -
Springboot Web应用Tomcat启动流程概述
本流程分析基于 :springboot 2.1.1Tomcat 9.0.13缺省配置应用启动过程中Tomcat的启动SpringApplication#run()SpringApplication#refreshContext(context)这里 context 是 AnnotationConfigServletWebServerApplicationContextS...原创 2018-12-15 22:32:58 · 1954 阅读 · 3 评论 -
Spring Security Web : StrictHttpFirewall HTTP防火墙(严格模式)
概述功能介绍StrictHttpFirewall是Spring Security Web提供的一个HTTP防火墙(对应概念模型接口HttpFirewall)实现,该实现采用了严格模式,遇到任何可疑的请求,会通过抛出异常RequestRejectedException拒绝该请求。StrictHttpFirewall也是Spring Security Web在安全过滤器代理FilterChainP...原创 2019-05-24 10:13:25 · 11698 阅读 · 1 评论 -
Spring Security Config : WebSecurityConfigurerAdapter
概述介绍WebSecurityConfigurerAdapter是Spring Security Config内置提供的一个WebSecurityConfigurer抽象实现类。WebSecurityConfigurerAdapter存在的目的是提供一个方便开发人员配置WebSecurity的基类。它提供了一组全方位配置WebSecurity的缺省方法实现。开发人员只要继承WebSecurit...原创 2019-05-28 09:19:10 · 9872 阅读 · 0 评论 -
Spring Security Web : 概念模型接口 HttpFirewall
概述功能介绍HttpFirewall是Spring Web提供的一个接口,抽象建模HTTP防火墙这一概念。相应对象用于拒绝存在潜在风险的请求或者包装它们以控制它们的行为。该接口的实现类会被注入到FilterChainProxy,在安全过滤器链被调用之前该防火墙逻辑会被调用。如果响应对象的行为需要被限制,该防火墙也可以对响应进行包装再返回给请求方。HttpFirewall只定义了两个接口方法,...原创 2019-05-23 09:08:31 · 1315 阅读 · 0 评论 -
Spring Security Config : 概念模型 WebSecurityConfigurer Web安全配置器
概述介绍WebSecurityConfigurer是Spring Security Config的一个概念模型接口,用于建模"Web安全配置器"这一概念模型。WebSecurityConfigurer被设计用于配置"Web安全构建器"WebSecurity对象,自身并没有定义任何方法,但是它继承自接口SecurityConfigurer,表明这是一个"安全配置器"。并且从定义中可以看出,We...原创 2019-05-26 11:01:53 · 1111 阅读 · 0 评论 -
Spring Security Web 应用遇到了 RequestRejectedException 怎么办 ?
在我们开发使用Spring Security的Web应用时,有的时候会遇到RequestRejectedException,这时候应该怎么办呢 ?实际上,RequestRejectedException是Spring Security的防火墙机制抛出的。如果遇到了该异常,开发人员可以从以下几个方面是不是存在问题 :请求路径中是否包含./,/../,/.等字符串序列,这些字符串序列会被认为是有...原创 2019-05-26 10:40:57 · 15842 阅读 · 0 评论 -
Spring MVC HandlerMapping : RequestMappingHandlerMapping 源代码解析
源代码版本 : spring-webmvc-5.1.4.RELEASE概述RequestMappingHandlerMapping是HandlerMapping的一个实现,主要用于针对控制器类(带有注解@Controller)中类级别或者方法级别的注解@RequestMapping创建RequestMappingInfo并管理。RequestMappingHandlerMapping的实...原创 2019-03-30 22:16:36 · 2117 阅读 · 1 评论 -
Spring Web 概念模型 : Web请求 -- WebRequest
对于来自Web的HTTP用户请求,Spring Web对其进行了抽象,其中典型的一个概念模型接口,就是WebRequest。但并不是所有有关HTTP Web请求的信息都是在接口WebRequest中定义的,而是在跟WebRequest有关的一组接口或者类中。本文我们对这些接口或者类做一个简单的介绍。下面是这组接口/类之间的层级关系图,以及它们各自的方法和属性。从该图可以看出 :Reque...原创 2019-03-30 21:36:12 · 2130 阅读 · 0 评论 -
Springboot 应用常见的BeanPostProcessor清单
本文基于一个Springboot + JPA + Web MVC 项目列出了其中用到的所有BeanPostProcessor并给出要点功能介绍以备开发人员参考。具体所使用的配置如下 :Springboot 2.1.1Spring Data JPA 2.1.3 RELEASESpring Web 5.1.3 RELEASESpring Web MVC 5.1.3 RELEASE...原创 2019-01-08 22:57:39 · 3089 阅读 · 2 评论 -
Web应用中的 Spring Security 要点笔记
在一个使用了Spring Security 的 Web 应用中,安全目标的达成基于 Servlet Filter :客户端对应用发起请求,容器基于请求URI决定应用哪个servlet和哪些filters;每个请求最多由某一个servlet处理; 所有要应用的filter按照特定顺序形成一个链; Filter顺序的决定 Filter bean定义通过使用注解@Order或者实现接口Or...原创 2018-07-30 18:22:08 · 398 阅读 · 0 评论 -
Spring Boot基于特定条件创建Bean例子 : ConditionalOnMissingClass
结合使用注解@ConditionalOnMissingClass和@Bean,可以仅当某些类不存在于 classpath 上时候才创建某个Bean:@Configurationpublic class ConditionOnMissingClassConfig { @Bean @ConditionalOnMissingClass(value={"com.sample.Dum...原创 2018-07-30 15:05:45 · 9340 阅读 · 0 评论 -
缺省配置Springboot Web应用启动过程中定义的Bean
1. ApplicationContext 对象构建时登记 6 个 bean 定义对于完全采用缺省配置的Springboot Web应用,其ApplicationContext的实现类最终采用 AnnotationConfigEmbeddedWebApplicationContext,它位于包 org.springframework.boot.context.embedded中。该类原创 2017-11-15 18:21:08 · 4095 阅读 · 4 评论 -
缺省配置Springboot Web应用中tomcat的启动过程
概述独立部署的tomcat服务器的启动过程传统意义上一个独立部署和运行的tomcat服务器的启动可以理解成两个阶段 : tomcat 容器本身的启动;tomcat容器中所部署的web app的启动;完成了以上两个阶段,我们才能访问到我们所开发的业务逻辑。在这种情况下,web app的部署动作,通常是由系统部署人员通过某种方式在启动服务器前完成的。spring bo原创 2017-11-27 18:37:57 · 7320 阅读 · 0 评论 -
Spring : 概念模型接口 HttpMessageConverter
HttpMessageConverter原创 2018-05-27 00:24:45 · 539 阅读 · 0 评论 -
Spring和线程:异步操作
之前我们开始了在Spring中使用任务执行器TaskExecutor,这样对于在Spring应用中如何使用线程,我们就更熟悉了。然而有时候使用任务执行器可能有些啰嗦,特别是我们只需要执行一个简单的动作时。这时候Spring的异步方法就派上用场了。相比把任务执行器TaskExecutor和可运行任务Runnable混到一起,你可以交出执行器的控制权,换做使用简单的异步功能。为了在另外...翻译 2018-04-07 11:24:01 · 595 阅读 · 0 评论