您的位置:首页 > Web前端 > JavaScript

jsp字符拦截器

2015-11-21 09:55 555 查看
很多在学习jsp的时候遇到乱码的问题吧,解决方法其实很简单,自定义一个字符拦截器即可。

为了不耦合在业务代码中,我们应该将字符转换代码独立出来,做成一个字符拦截器

直接上代码:

package com.jdbc.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CharacterFilter implements Filter {
private FilterConfig config;

public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// 从web.xml文件中获取encoding对应的init-param中的param-value
String encoding = config.getInitParameter("encoding");
// 只要定义了变量;就要判断是否为空;不然会报空指针异常
if (encoding != null) {
// 指明内容请求格式的字符编码集
response.setContentType("text/html ;charset=" + encoding);
// 请求时规范字符编码格式
request.setCharacterEncoding(encoding);
// 指明输出的格式字符编码集
response.setCharacterEncoding(encoding);
}
// 进入下一个拦截器
chain.doFilter(request, response);
}
// FilterConfig 是拦截器的全局变量
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void destroy() {
}
}


接下来要让请求先进入字符拦截器中,在web.xml文件中配置

<!-- 字符编码集拦截器 -->
<filter>
<filter-name>CharacterFilter</filter-name>
<filter-class>com.jdbc.filter.CharacterFilter</filter-class>
<!-- 配置初始化参数 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- 映射路径 -->
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


以上便是字符拦截器,独立于业务代码,只需要copy到项目中即可。

一点点学习,一点点成长,有什么疑问和建议可以留言,我会及时处理。
更多干货等你来拿 http://www.itit123.cn/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: