关闭

jsp字符拦截器

标签: jdbc字符拦截器
3907人阅读 评论(0) 收藏 举报
分类:

很多在学习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/




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:628618次
    • 积分:7331
    • 等级:
    • 排名:第3170名
    • 原创:109篇
    • 转载:42篇
    • 译文:0篇
    • 评论:104条
    博客特色
    闻道有先后,术业有专攻。无贵无贱,无长无少,道之所存,师之所存也。
    我很喜欢这句话,当我们遇到不熟悉的领域,就应该虚心学习。同时我们也不能因为别人的夸赞而骄傲,我们只是比他们先了解罢了。
    我喜欢将学习的知识总结写成博客。把这里当作笔记本,方便自己同时也希望帮助到其他人。
    博客专栏