CharacterEncodingFilter
来源:互联网 发布:ngrok 没有域名 编辑:程序博客网 时间:2024/05/19 14:00
-
<filter> -
<filter-name>encodingFilter</filter-name> -
<filter- -
org.springframework.web.filter.CharacterEncodingFilter -
</filter- -
<init-param> -
<param-name>encoding</param-name> -
<param-value>UTF-8</param-value> -
</init-param> -
<init-param> -
<param-name>forceEncoding</param-name> -
<param-value> -
</init-param> -
</filter> -
<filter-mapping> -
<filter-name>encodingFilter</filter-name> -
<url-pattern>/*</url-pattern> -
</filter-mapping>
-
public final voiddoFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) -
throws ServletException, IOException { -
........... -
........... -
String alreadyFilteredAttribute Name = getAlreadyFilteredAttrib uteName(); -
(request.getAttribute(alreadyFilteredAttribute nullName) != || shouldNotFilter(httpRequest)) { -
filterChain.doFilter(request, response); -
} -
{ -
request.setAttribute(alreadyFilteredAttribute Name, Boolean.TRUE); -
{ -
doFilterInternal(httpRequest, httpResponse, filterChain); -
} -
{ -
request.removeAttribute(alreadyFilteredAttribute Name); -
} -
} -
} - public
static final ".FILTERED";(在OncePerRequestFilter中定义的常量)String ALREADY_FILTERED_SUFFIX =
说明:
1. getAlreadyFilteredAttrib
2. 当request.setAttribute(alreadyFilteredAttribute
-
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) -
throws ServletException, IOException { -
( this.encoding!= null&& this.forceEncoding( || null))request.getCharacterEncoding() == { -
request.setCharacterEncoding( -
( this.forceEncoding&& responseSetCharacterEnco dingAvailable) { -
response.setCharacterEncoding( -
} -
} -
filterChain.doFilter(request, response); -
} - private
final staticboolean responseSetCharacterEnco dingAvailable = ClassUtils.hasMethod( -
HttpServletResponse. "setCharacterEncoding", new Class[] class});{String.
说明:
1. 静态常量responseSetCharacterEnco
2. this.encoding != null :当encoding初始化参数被指定时条件满足。
3. (this.forceEncoding || request.getCharacterEncoding() == null)==true:当forceEncoding初始化参数设置为true或者request已经被指定了一个字符编码的时候条件满足。
如果没记得错,Spring早期版本这个方法得实现应该是:
-
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) -
throws ServletException, IOException { -
( this.forceEncoding|| null)request.getCharacterEncoding() == { -
request.setCharacterEncoding( -
} -
filterChain.doFilter(request, response); -
}
参数forceEncoding的作用很明显了吧!以前只是对request字符编码起作用,现在如果将forceEncoding设为true也会影响到response中的字符编码,通常这个是我们不希望的。
总结:
1.
2.
- CharacterEncodingFilter
- CharacterEncodingFilter
- CharacterEncodingFilter
- CharacterEncodingFilter
- CharacterEncodingFilter
- CharacterEncodingFilter
- CharacterEncodingFilter 失效
- CharacterEncodingFilter作用
- CharacterEncodingFilter详解
- 编码过滤器类CharacterEncodingFilter
- CharacterEncodingFilter类的学习
- CharacterEncodingFilter类的学习
- CharacterEncodingFilter by Spring class
- CharacterEncodingFilter 字符编码过滤器
- CharacterEncodingFilter过滤器处理乱码
- CharacterEncodingFilter类的学习
- CharacterEncodingFilter类的学习
- CharacterEncodingFilter类的学习
- malloc申请大内存报错分析
- 删掉错误:ORA-00942:表或视图不存在
- WIZnet员工SQL Server 2008培训笔记(七)
- java如何调用dll
- JPA关系映射
- CharacterEncodingFilter
- Metacity -- Gnome的默认窗口管理器
- Hibernate配置项
- 文件删除后并清空了回收站,如何再找回?
- Oracle中的Sequence
- 海量数据面试题整理
- 九度OJ-1172-哈夫曼树
- 关于struts2异常ognl.OgnlException: target is null for setProperty
- Spring简介