jsp字符拦截器

很多在学习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到项目中即可。


一点点学习,一点点成长,有什么疑问和建议可以留言,我会及时处理。




你可能感兴趣的:(jdbc,字符拦截器)