`
ygsilence
  • 浏览: 336723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

request编码Filter

    博客分类:
  • java
阅读更多
package com.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;

/**
 * 前端设置request编码
 * @
 */
public class EncodingFilter implements Filter
{
	static org.apache.log4j.Logger logger=Logger.getLogger(EncodingFilter.class);

	/* (non-Javadoc)
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig pArg0) throws ServletException
	{
	}

	public void doFilter(ServletRequest pRequest,ServletResponse response,FilterChain pArg2) throws IOException,ServletException
	{
		logger.info("前端设置request编码");
		HttpServletRequest request=(HttpServletRequest)pRequest;
		String queryString=request.getQueryString();
		String encoding=getParameter(queryString,SYSConstant.ENCODING_PARAM_NAME);
		if(encoding==null)
		{
			encoding="UTF-8";
		}

		pRequest.setCharacterEncoding(encoding);
		logger.debug("encoding:"+encoding);
		pArg2.doFilter(request,response);
	}
	/**
	 * 从request中读出param的值,不考虑编码问题
	 * @param request
	 * @param pParamName
	 * @param pEncoding
	 * @return
	 */
	public String getParameter(String queryString,String pParamName)
	{
		logger.info("从request中读出param的值,不考虑编码问题");
		String[] paramPairs=StringHelper.split(queryString, '&');
		for(int i=0;i<paramPairs.length;i++)
		{
			int indexEquals=paramPairs[i].indexOf('=');
			if(indexEquals!=-1)
			{
				String name=paramPairs[i].substring(0,indexEquals);
				if(name.equalsIgnoreCase(pParamName))
				{
					String value=paramPairs[i].substring(indexEquals+1);
					return value;
				}
			}
		}
		return null;
	}
	/* (non-Javadoc)
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy()
	{
	}

}
分享到:
评论

相关推荐

    JavaEE Filter全局编码过滤器

    JavaEE Filter全局编码过滤器是Java企业版(JavaEE)中的一个重要组件,它在Web应用程序中扮演着数据处理和预处理的角色。Filter是Java Servlet规范的一部分,允许开发者在请求到达Servlet之前或者响应离开Servlet...

    java字符编码监听器

    在Java代码中,我们可以自定义过滤器类继承`javax.servlet.Filter`,然后在`doFilter`方法中设置请求的字符编码。例如: ```java public void doFilter(ServletRequest request, ServletResponse response, ...

    JSP利用过滤器解决request中文乱码问题.docx

    在上面的JSP页面中,我们设置了页面的字符编码为GB2312,并使用request.getParameter()方法读取参数。如果过滤器正确地设置了字符编码,那么中文字符将被正确地读取。 使用过滤器解决request中文乱码问题是JSP中...

    mysql插入数据库编码解决

    创建一个名为`Filtercode`的过滤器,该过滤器会设置请求和响应的编码为UTF-8。过滤器代码如下: ```java package com.jin.servlet; import java.io.IOException; import javax.servlet.Filter; import javax....

    JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题

    标题和描述中提到的问题——"JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题",是由于对HTTP协议的理解不足以及不正确的编码设置导致的。下面将详细解释这个问题...

    Filter过滤器的代码及其web.xml配置代码

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...

    在使用实现过滤器进行request包装,获取内层request的分析

    例如,登录验证、字符编码转换、权限控制等任务都可以在过滤器中完成。以下是一个简单的过滤器实现示例: ```java public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest...

    javaWeb项目 filter练习

    本项目"javaWeb项目 filter练习"主要关注了两个核心的应用场景:编码过滤和登录过滤。下面将详细介绍这两个方面的内容。 **编码过滤** 在Web应用中,数据从客户端传输到服务器时,可能会遇到编码不一致的问题,导致...

    字符编码过滤器

    在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...

    编码过滤器

    在Web开发中,编码过滤器(Encoding Filter)是一种常见的技术,用于处理HTTP请求中的编码问题,确保数据在传输过程中的正确性。标题“编码过滤器”直指这一关键概念,而描述“配置在web.xml中的过滤器,支持过滤GET...

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法 在基于tomcat8 的Web应用程序中,字符编码问题是常见的问题之一。特别是在处理POST请求时,中文字符可能会出现乱码的情况。为了解决这个问题,我们可以...

    java filter打印请求返回参数

    ### Java Filter 打印请求返回参数详解 #### 一、背景与目的 在Web开发过程中,经常需要在请求处理流程中增加一些通用的功能,比如日志记录、性能监控、安全控制等。Java Servlet规范提供了Filter机制来实现这些...

    Filter过滤器的概念和使用

    这段代码展示了如何通过Filter设置字符编码。首先尝试从Filter配置中获取字符集参数,如果没有则使用默认值。接着设置请求和响应的字符集,并将请求传递下去。 #### 2. 控制浏览器缓存 有时候,我们需要控制浏览器...

    java 中如何使用filter过滤器

    - **字符编码转换**:统一处理请求和响应的编码问题。 - **日志记录**:记录请求信息,便于调试和分析。 - **缓存处理**:对静态资源进行缓存,减少服务器压力。 - **GZIP压缩**:压缩HTTP响应,减少网络传输的数据...

    Filter解决中文乱码

    总结来说,使用Filter解决中文乱码问题是一种有效的方法,通过在请求处理链的早期设定合适的字符编码,可以避免因为编码不一致而导致的乱码问题。`CharacterEncodingFilter`的实现及其在`web.xml`中的配置是实现这一...

    JavaWeb页面过滤器之编码过滤

    JavaWeb中的Filter接口是实现编码过滤的关键。Filter是Servlet API的一部分,可以拦截HTTP请求和响应,进行预处理和后处理。在创建编码过滤器时,我们需要实现Filter接口并重写doFilter方法。在这个方法中,我们可以...

    java字符编码错误整理大全

    - **Servlet中设置请求编码**:通过`request.setCharacterEncoding("gb2312")`设置请求编码。 - **Servlet响应设置**:通过`response.setContentType("text/html;charset=gb2312")`设置响应编码。 - **HTML头部...

    Servlet编码过滤器的实现

    编码过滤器的实现通常基于`javax.servlet.Filter`接口。下面,我们来看一个简单的`EncodingFilter`的实现: ```java import javax.servlet.*; import java.io.IOException; public class EncodingFilter ...

    Filter简介和工作原理

    在处理请求时,Filter可以通过调用`chain.doFilter(request, response)`来将控制权传递给下一个Filter或目标资源。如果Filter选择不继续处理,可以直接修改响应并返回给客户端,或者使用`RequestDispatcher`或`...

Global site tag (gtag.js) - Google Analytics