`
wq_pro
  • 浏览: 33143 次
  • 来自: ...
社区版块
存档分类

使用动态代理解决get参数中文乱码

阅读更多
public class RequestHandler implements InvocationHandler {
	HttpServletRequest request;
	public RequestHandler(HttpServletRequest request){
		this.request=request;
		
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		// TODO Auto-generated method stub
		
	 	Object result=method.invoke(request, args);
	 	if(method.getName().equals("getParameter")){
                     //根据项目的统一编码类型调整红色部分
	 		if(result != null){
                            result =new String(((String)result).getBytes("ISO-8859-1"),"UTF-8");
                        }
                }
		return result;
	}
}

 在web.xml配置一个过滤器,关键代码如下

 

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		InvocationHandler handler = new RequestHandler((HttpServletRequest)arg0);
		HttpServletRequest request=(HttpServletRequest)Proxy.newProxyInstance(arg0.getClass().getClassLoader(), arg0.getClass().getInterfaces(), handler);
		
		arg2.doFilter(request, arg1);
	}

 通过以上程序的拦截处理,你在action中使用request.getParameter方法获取参数时就可以得到正确的解码值

 

分享到:
评论

相关推荐

    如何解决Tomcat下中文乱码问题?

    总结来说,解决Tomcat下的中文乱码问题,关键在于确保JSP页面的编码与服务器设置一致,并在处理表单提交时正确设置请求的字符编码。在实际开发中,推荐使用UTF-8作为统一的编码标准,因为UTF-8能够兼容各种语言,...

    response响应数据变成???&使用jquery发送带中文参数数据的get请求得到响应数据乱码解决过程

    ”,二是使用jQuery发送带中文参数的GET请求时出现乱码,以及相应的解决策略。 首先,让我们来分析响应数据变成“???”的情况。当我们在Servlet中设置`request.setCharacterEncoding("UTF-8")`和`response....

    PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    综上所述,处理file_get_contents抓取网页中文乱码的方法主要通过使用curl来代替file_get_contents,并设置curl的相关参数;或者利用PHP内置的zlib库来处理数据流。通过这些方法,可以有效解决由GZIP压缩引起的内容...

    Lotusscript代理获取url的传值及解码

    其中,一个常见的问题是中文字符的乱码问题,尤其是在 POST 和 GET 请求方式下。本文将详细介绍如何使用 LotusScript 来解决这些问题。 #### 二、POST 方法取值 POST 方法通常用于向服务器发送较为复杂的数据,例如...

    JDBC数据库操作乱码无缝过渡解决方案

    JDBC数据库操作乱码非主流解决方案---JDBC连接驱动代理 以驱动的方式提供给使用方,在底层实现连接的代理管理功能,向使用者隐藏 实现过程以及无缝的过渡 你需要了解下列参数: proxy.driver= (必须)实际要连接...

    java 中http请求为了防止乱码解决方案

    针对GET请求,乱码问题通常出现在URL中携带的查询参数。在`sendGet`方法中,可以看到将参数直接拼接到了URL后面。由于URL编码默认使用的是ASCII字符集,非ASCII字符会被转换为%XX的形式,如果服务器端不正确处理,就...

    以httpclient方式提交数据

    HttpClient还支持更多高级功能,如设置超时、配置重试策略、使用代理等。例如,可以使用`RequestConfig`来定制请求配置: ```java RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) ....

    lotus domino AJAX get通过URL传数据

    为了确保中文字符如“韦洪声”在传输过程中不被乱码,我们使用了`escape()`函数进行编码。`Math.random()`用于生成一个随机数,通常用于防止浏览器缓存请求。 在Lotus Domino后端,我们有一个名为“GetParameter”...

    lotus domino BS开发 路徑地址傳值

    - 示例代码展示了如何通过`window.open()`传递参数,包括中文字符,并在目标页面使用JavaScript函数`getQuery()`获取这些参数。 7. **JavaScript与正则表达式**: - 正则表达式在`getQuery()`函数中用来匹配并...

    WinHttp.WinHttpRequest.5.1中文参考手册

    《WinHttp.WinHttpRequest.5.1中文参考手册》详尽解析了如何使用这个组件进行HTTP通信。WinHttp.WinHttpRequest.5.1是Windows系统内置的一个HTTP客户端接口,它提供了发送HTTP请求并接收响应的能力,广泛应用于自动...

    Linux curl命令参数详解.docx

    Linux curl 命令可以使用 GET 或 POST 方式提交数据,例如: curl -G -d name=value1&name2=value2 http://www.baidu.com curl -d name=value1&name2=value2 http://www.baidu.com curl -d a=bc=dtxt@/tmp/txt ...

    ajax请求post和get的区别以及get post的选择

    浏览器和一些代理服务器会缓存GET请求的结果,这可能会导致用户在不刷新页面的情况下获取过时的数据。 POST请求方法则有以下特点: 1. POST请求通常用于发送数据到服务器,比如提交表单数据。在HTML表单中,如果不...

    Ajax学习文档(无门槛-精)Markdown File (.md)

    为解决跨域问题,可采用JSONP、CORS(跨源资源共享)或者代理服务器等方法。 - **JSONP**:通过动态创建`<script>`标签来绕过同源策略,适用于支持GET请求的API。 - **CORS**:服务器通过设置特定的HTTP头部,允许...

    C++、C#写的WebService(gsoap)相互调用

    - 解决中文乱码问题,通常需要在编码和解码时统一使用相同的字符集,并在HTTP头信息中明确指定编码方式。 总结来说,C++和C#的WebService相互调用涉及多个技术层面,包括HTTP协议、SOAP协议、WSDL描述、数据序列化...

    WinInetDemo_WinInet_

    1. **初始化WinINet**:首先,需要调用`InternetOpen`函数初始化WinINet环境,设置用户代理、超时时间等参数。这是使用WinINet库的第一步,为后续的网络操作创建上下文。 2. **建立HTTP连接**:使用`...

    SSH前言讲义

    - 修改`<Connector>`标签中的`URIEncoding`属性为`UTF-8`,解决GET请求时中文乱码的问题。 **1.2.3 设置管理应用的登录用户名与密码** - 打开Tomcat安装目录下的`conf`文件夹中的`tomcat-users.xml`文件。 - 在文件...

    Web http debug

    GET请求通常用于获取服务器上的资源,其参数通过URL携带,可见性较高,适合获取数据但不适合传输敏感信息。POST请求则用于向服务器提交数据,如表单提交,其数据隐藏在请求体中,更安全,能承载大量数据。 在Web...

    27篇python小片段文章.pdf

    Python中可以使用encoding参数来指定正确的编码格式,如使用requests库时指定encoding参数。 8. 使用urllib2模拟post, get采集信息: urllib2是Python的一个内置库,可以用来模拟用户通过浏览器向服务器发送post或...

    proxool连接池

    同时,Proxool允许动态调整连接池的参数,以适应不同的负载情况。 总之,Proxool作为一个轻量级的数据库连接池,以其简单易用和高效的特点,在中小型项目中得到了广泛应用。理解并掌握Proxool的配置和使用,有助于...

Global site tag (gtag.js) - Google Analytics