⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tomcatformfilter.java

📁 MyEclipse6Java中文教程的代码
💻 JAVA
字号:
package filters;

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.HttpServletRequestWrapper;

public class TomcatFormFilter implements Filter {
	/**
	  * Request.java
	  * 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的 HttpServletRequest
	  * 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request 对象替换页面中的
	  * request 对象即可.
	  */

	class Request extends HttpServletRequestWrapper
	{

	    public Request(HttpServletRequest request) {
	    	super(request);
	    }

		/**
		 * 转换由表单读取的数据的内码.
		 * 从 ISO 字符转到 GBK.
		 */
		public String toChi(String input) {
		    try {
		      byte[] bytes = input.getBytes("ISO8859-1");
		      return new String(bytes, "GBK");
		    }
		    catch (Exception ex) {
		    }
		    return null;
		}

	    /**
	     * Return the HttpServletRequest holded by this object.
	     */
	    private HttpServletRequest getHttpServletRequest()
	    {
	        return (HttpServletRequest)super.getRequest();
	    }

		/**
		 * 读取参数 -- 修正了中文问题.
		 */
	    public String getParameter(String name)
	    {
	    	return toChi(getHttpServletRequest().getParameter(name));
	    }

		/**
		 * 读取参数列表 - 修正了中文问题.
		 */
	    public String[] getParameterValues(String name)
	    {
		      String values[] = getHttpServletRequest().getParameterValues(name);
		      if (values != null) {
		        for (int i = 0; i < values.length; i++) {
		          values[i] = toChi(values[i]);
		        }
		      }
		      return values;
	    }
	}
	public void destroy() {
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest httpreq = (HttpServletRequest)request;
		if(httpreq.getMethod().equals("POST")) {
			request.setCharacterEncoding("GBK");
		} else {
			request = new Request(httpreq);
		}

		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
	}

}

⌨️ 快捷键说明

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