encodefilter.java

来自「基于j2ee的物流软件」· Java 代码 · 共 88 行

JAVA
88
字号
package com.wuliu.filter;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

/*
 * 过滤器BY VOID 1-11
 */

public class EncodeFilter implements Filter
{
	public String encoding = "gbk";
	private ServletContext sct;

	public void destroy()
	{
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest sreq, ServletResponse sres,
			FilterChain chain) throws IOException, ServletException
	{
		HttpServletRequest hreq = (HttpServletRequest) sreq;
		String method = hreq.getMethod();
		if (method.equalsIgnoreCase("post"))
		{
			hreq.setCharacterEncoding(this.encoding);
		} else
		{
			hreq = new EncodingFilter(hreq);

		}
		chain.doFilter(hreq, sres);
	}

	public void init(FilterConfig fconfig) throws ServletException
	{
		// TODO Auto-generated method stub
		this.encoding = fconfig.getInitParameter("encoding");
		sct = fconfig.getServletContext();
		sct.log("过滤器[ " + fconfig.getFilterName() + "]已经初始化.");
	}

	private class EncodingFilter extends HttpServletRequestWrapper
	{
		HttpServletRequest request = null;

		public EncodingFilter(HttpServletRequest request)
		{
			super(request);
			this.request = request;
		}

		@Override
		public String getParameter(String name)
		{
			String strname = request.getParameter(name);
			String temp = null;
			if (strname != null)
			{
				try
				{
					// 用ISO-8859-1的字符集格式获得,转换成默认字体集
					temp = new String(strname.getBytes("ISO-8859-1"), encoding);

				} catch (UnsupportedEncodingException e)
				{
					e.printStackTrace();
				}
			}
			return temp;
		}

	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?