Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
d4892278
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d4892278
编写于
5月 04, 2019
作者:
J
Johnny Lim
提交者:
Juergen Hoeller
5月 04, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use HttpHeaders constants where possible
上级
ffbecf14
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
27 deletion
+14
-27
spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java
...pringframework/web/context/request/ServletWebRequest.java
+8
-17
spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java
...g/springframework/web/filter/ShallowEtagHeaderFilter.java
+4
-9
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletInvocableHandlerMethod.java
.../mvc/method/annotation/ServletInvocableHandlerMethod.java
+2
-1
未找到文件。
spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java
浏览文件 @
d4892278
...
...
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.lang.Nullable
;
...
...
@@ -50,16 +51,6 @@ import org.springframework.web.util.WebUtils;
*/
public
class
ServletWebRequest
extends
ServletRequestAttributes
implements
NativeWebRequest
{
private
static
final
String
ETAG
=
"ETag"
;
private
static
final
String
IF_MODIFIED_SINCE
=
"If-Modified-Since"
;
private
static
final
String
IF_UNMODIFIED_SINCE
=
"If-Unmodified-Since"
;
private
static
final
String
IF_NONE_MATCH
=
"If-None-Match"
;
private
static
final
String
LAST_MODIFIED
=
"Last-Modified"
;
private
static
final
List
<
String
>
SAFE_METHODS
=
Arrays
.
asList
(
"GET"
,
"HEAD"
);
/**
...
...
@@ -244,11 +235,11 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
HttpStatus
.
NOT_MODIFIED
.
value
()
:
HttpStatus
.
PRECONDITION_FAILED
.
value
());
}
if
(
isHttpGetOrHead
)
{
if
(
lastModifiedTimestamp
>
0
&&
parseDateValue
(
response
.
getHeader
(
LAST_MODIFIED
))
==
-
1
)
{
response
.
setDateHeader
(
LAST_MODIFIED
,
lastModifiedTimestamp
);
if
(
lastModifiedTimestamp
>
0
&&
parseDateValue
(
response
.
getHeader
(
HttpHeaders
.
LAST_MODIFIED
))
==
-
1
)
{
response
.
setDateHeader
(
HttpHeaders
.
LAST_MODIFIED
,
lastModifiedTimestamp
);
}
if
(
StringUtils
.
hasLength
(
etag
)
&&
response
.
getHeader
(
ETAG
)
==
null
)
{
response
.
setHeader
(
ETAG
,
padEtagIfNecessary
(
etag
));
if
(
StringUtils
.
hasLength
(
etag
)
&&
response
.
getHeader
(
HttpHeaders
.
ETAG
)
==
null
)
{
response
.
setHeader
(
HttpHeaders
.
ETAG
,
padEtagIfNecessary
(
etag
));
}
}
}
...
...
@@ -260,7 +251,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
if
(
lastModifiedTimestamp
<
0
)
{
return
false
;
}
long
ifUnmodifiedSince
=
parseDateHeader
(
IF_UNMODIFIED_SINCE
);
long
ifUnmodifiedSince
=
parseDateHeader
(
HttpHeaders
.
IF_UNMODIFIED_SINCE
);
if
(
ifUnmodifiedSince
==
-
1
)
{
return
false
;
}
...
...
@@ -276,7 +267,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
Enumeration
<
String
>
ifNoneMatch
;
try
{
ifNoneMatch
=
getRequest
().
getHeaders
(
IF_NONE_MATCH
);
ifNoneMatch
=
getRequest
().
getHeaders
(
HttpHeaders
.
IF_NONE_MATCH
);
}
catch
(
IllegalArgumentException
ex
)
{
return
false
;
...
...
@@ -319,7 +310,7 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
if
(
lastModifiedTimestamp
<
0
)
{
return
false
;
}
long
ifModifiedSince
=
parseDateHeader
(
IF_MODIFIED_SINCE
);
long
ifModifiedSince
=
parseDateHeader
(
HttpHeaders
.
IF_MODIFIED_SINCE
);
if
(
ifModifiedSince
==
-
1
)
{
return
false
;
}
...
...
spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java
浏览文件 @
d4892278
...
...
@@ -26,6 +26,7 @@ import javax.servlet.ServletRequest;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.util.Assert
;
import
org.springframework.util.DigestUtils
;
...
...
@@ -53,12 +54,6 @@ import org.springframework.web.util.WebUtils;
*/
public
class
ShallowEtagHeaderFilter
extends
OncePerRequestFilter
{
private
static
final
String
HEADER_ETAG
=
"ETag"
;
private
static
final
String
HEADER_IF_NONE_MATCH
=
"If-None-Match"
;
private
static
final
String
HEADER_CACHE_CONTROL
=
"Cache-Control"
;
private
static
final
String
DIRECTIVE_NO_STORE
=
"no-store"
;
private
static
final
String
STREAMING_ATTRIBUTE
=
ShallowEtagHeaderFilter
.
class
.
getName
()
+
".STREAMING"
;
...
...
@@ -124,8 +119,8 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
}
else
if
(
isEligibleForEtag
(
request
,
responseWrapper
,
statusCode
,
responseWrapper
.
getContentInputStream
()))
{
String
responseETag
=
generateETagHeaderValue
(
responseWrapper
.
getContentInputStream
(),
this
.
writeWeakETag
);
rawResponse
.
setHeader
(
H
EADER_
ETAG
,
responseETag
);
String
requestETag
=
request
.
getHeader
(
H
EADER_
IF_NONE_MATCH
);
rawResponse
.
setHeader
(
H
ttpHeaders
.
ETAG
,
responseETag
);
String
requestETag
=
request
.
getHeader
(
H
ttpHeaders
.
IF_NONE_MATCH
);
if
(
requestETag
!=
null
&&
(
"*"
.
equals
(
requestETag
)
||
compareETagHeaderValue
(
requestETag
,
responseETag
)))
{
rawResponse
.
setStatus
(
HttpServletResponse
.
SC_NOT_MODIFIED
);
}
...
...
@@ -157,7 +152,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
String
method
=
request
.
getMethod
();
if
(
responseStatusCode
>=
200
&&
responseStatusCode
<
300
&&
HttpMethod
.
GET
.
matches
(
method
))
{
String
cacheControl
=
response
.
getHeader
(
H
EADER_
CACHE_CONTROL
);
String
cacheControl
=
response
.
getHeader
(
H
ttpHeaders
.
CACHE_CONTROL
);
return
(
cacheControl
==
null
||
!
cacheControl
.
contains
(
DIRECTIVE_NO_STORE
));
}
return
false
;
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletInvocableHandlerMethod.java
浏览文件 @
d4892278
...
...
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
import
org.springframework.core.MethodParameter
;
import
org.springframework.core.ResolvableType
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.Assert
;
...
...
@@ -167,7 +168,7 @@ public class ServletInvocableHandlerMethod extends InvocableHandlerMethod {
if
(!
isRequestNotModified
(
webRequest
))
{
HttpServletResponse
response
=
webRequest
.
getNativeResponse
(
HttpServletResponse
.
class
);
Assert
.
notNull
(
response
,
"Expected HttpServletResponse"
);
if
(
StringUtils
.
hasText
(
response
.
getHeader
(
"ETag"
)))
{
if
(
StringUtils
.
hasText
(
response
.
getHeader
(
HttpHeaders
.
ETAG
)))
{
HttpServletRequest
request
=
webRequest
.
getNativeRequest
(
HttpServletRequest
.
class
);
Assert
.
notNull
(
request
,
"Expected HttpServletRequest"
);
ShallowEtagHeaderFilter
.
disableContentCaching
(
request
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录