Servlet —— Filter示例:字符编码
来源:互联网 发布:苹果抢购软件 编辑:程序博客网 时间:2024/05/17 13:12
功能
字符编码Filter是最常用的Filter之一,常用来解决Tomcat等服务器里request、response乱码的问题。
字符编码Filter是在request提交到Servlet之前对request进行指定编码方式的编码。
代码
publicclass CharacterEncodingFilterimplements Filter {
private StringcharacterEncoding;// 编码方式,配置在web.xml中
privatebooleanenabled;// 是否启用该Filter,配置在web.xml中
@Override
publicvoid init(FilterConfig filterConfig)throws ServletException {
this.characterEncoding = filterConfig.getInitParameter("characterEncoding")
.trim();
this.enabled ="true".equalsIgnoreCase(filterConfig.getInitParameter(
"enabled").trim());
}
@Override
publicvoid doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
if (enabled) {
String method = request.getMethod();
if ("GET".equalsIgnoreCase(method)) {
// GET方式提交
chain.doFilter(new RequestWrapper(request), response);
} elseif ("POST".equalsIgnoreCase(method)) {
// POST方式提交
request.setCharacterEncoding(characterEncoding);
chain.doFilter(request, response);
}
} else {
chain.doFilter(request, response);
}
}
privateclass RequestWrapperextends HttpServletRequestWrapper {
public RequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String getParameter(String name) {
try {
returnnew String(super.getParameter(name).getBytes("iso8859-1"),
characterEncoding);
} catch (UnsupportedEncodingException e) {
thrownew RuntimeException("不支持编码:" + characterEncoding);
}
}
}
@Override
publicvoid destroy() {
}
}
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>cn.itcast.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>characterEncoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- Servlet —— Filter示例:字符编码
- Servlet —— Filter示例:字符编码
- 字符编码过滤器 Servlet Filter
- Servlet Filter示例
- Servlet Filter 简单示例
- servlet过滤器—filter
- filter 转换字符编码
- Filter字符编码过滤器
- Filter字符编码过滤器
- Servlet字符编码过滤器
- Servlet——Filter技术
- Servlet——Filter技术
- ---Filter ( 四 ) filter字符编码过滤器
- Tomcat 字符编码的filter
- Filter中配置字符编码
- Filter过滤器(字符编码)
- Filter过滤器—编码过滤
- 关于JSP/Servlet字符编码
- 【redis】redis集群配置小结
- 无消耗实现图片圆角方法
- android UID和PID
- 使用saltstack部署openstack
- HugePages on Linux: What It Is... and What It Is Not...
- Servlet —— Filter示例:字符编码
- Hibernate缓存机制
- linux解压 tar命令(总有人发广告我改成不允许评论了)
- universal image loader使用详解一
- 给Ubuntu 13.04换源 软件源、更新源
- 如何卸载eclipse中的ADT
- 数据可视化 D3.js实现力导向图之二(node带文字说明和提示)
- Codeforces Round #221 (Div. 2) B. I.O.U.
- ==, .equals(), compareTo(), and compare() (之一)