`

解决struts2get请求乱码问题

 
阅读更多

1、建立CharFilter.java

package cn.itcast.pub;

import java.io.IOException;
import java.util.Map;
import java.util.Set;

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 CharFilter implements Filter {

	private FilterConfig filterConfig = null;

	public void destroy() {
		this.filterConfig = null;
	}

	@SuppressWarnings("unchecked")
	public void doFilter(ServletRequest req, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		String encoding = this.filterConfig.getInitParameter("encoding");

		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse resp = (HttpServletResponse) response;
		request.setCharacterEncoding(encoding);
		resp.setContentType("text/html;charset="+encoding);
		System.out.println(request.getQueryString());
		// 处理GET参数
		if (request.getMethod().equalsIgnoreCase("get")) {
			Map paramMap = req.getParameterMap();
			String[] queryStringArray = { "" };
			if (request.getQueryString() != null) {
				queryStringArray = request.getQueryString().split("&");
			}
			for (int i = 0; i < queryStringArray.length; i++) {
				queryStringArray[i] = queryStringArray[i].replaceAll("(.*)=(.*)", "$1");
			}
			Set<String> keySet = paramMap.keySet();
			for (String key : keySet) {
				// check where param from
				boolean isFromGet = false;
				for (String paramFromGet : queryStringArray) {
					if (key.equals(paramFromGet)) {
						isFromGet = true;
					}
				}
				if (!isFromGet) {
					continue;
				}
				String[] paramArray = (String[]) paramMap.get(key);
				for (int i = 0; i < paramArray.length; i++) {
					paramArray[i] = new String(paramArray[i].getBytes("iso-8859-1"), encoding);
				}
			}
		}
		chain.doFilter(req, resp);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}
}

 2、web.xml

<!-- Filter 定义  -->
	<!-- GET Character Encoding filter -->
	<filter>
		<filter-name>CharFilter</filter-name>
		<filter-class>net.hlj.common.filter.CharFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<!-- Filter 映射 -->
	<filter-mapping>
		<filter-name>CharFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

分享到:
评论

相关推荐

    Struts2中文乱码问题最终解决方案

    Struts2框架中的`StrutsPrepareAndExecuteFilter`是核心过滤器,负责处理HTTP请求并执行相应的Action。在Struts.xml配置文件中,设置 `&lt;constant name="struts.i18n.encoding" value="UTF-8"/&gt;` 是为了指定字符编码...

    struts2的中文乱码问题解决

    ### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...

    struts解决中文乱码问题

    本文将深入探讨如何解决Struts框架下的中文乱码问题。 首先,我们来看一个具体的实例。在登录验证的例子中,原本只要用户名(username)和密码(userpass)都是"123"就会返回成功页面。现在,我们将其升级,要求...

    struts下的汉字乱码问题

    这样,所有进入的HTTP请求都会被强制转换为UTF-8编码,防止乱码问题。然后将这个过滤器在`web.xml`中配置,如`&lt;filter-mapping&gt;`标签,确保所有的请求都经过此过滤器。 3. Tomcat服务器配置: Tomcat的`server.xml...

    Struts2.0解决中文乱码

    本文将深入探讨如何在Struts2.0中解决中文乱码问题,确保应用程序能够正确地处理和显示中文字符。 ### Struts2.0中文乱码问题分析 #### 1. 表单提交中文乱码 在Web应用中,表单是用户与服务器交互的主要方式之一...

    struts2中文乱码问题

    如果上述方法仍然无法解决问题,可以尝试使用自定义的过滤器来强制设置请求和响应的字符编码。例如,可以通过Spring的`CharacterEncodingFilter`来进行设置: ```xml &lt;filter-name&gt;encodingFilter ...

    struts 2. 5.2解决中文乱码

    解决这个问题需要深入理解HTTP协议、Java I/O流以及Struts 2框架的配置。 首先,我们需要了解乱码产生的原因。在Web应用中,数据在网络传输过程中是以字节流的形式,而字符集的不同可能导致字节流在解码时出现问题...

    struts1.2 解决中文乱码

    ### Struts 1.2 中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会...

    struts2中文乱码解决Demo

    本DEMO是为了解决Struts2在处理中文输入时可能出现的乱码问题,确保系统能够正确地接收和显示中文字符。 首先,我们要理解乱码产生的原因。在Web应用中,数据的传输通常涉及多种编码方式,如HTTP请求的默认编码通常...

    Struts2Action处理中文乱码

    这行代码告诉Struts2框架在处理请求和响应时使用GBK编码,从而解决可能出现的中文乱码问题。不过,需要注意的是,如果你的项目使用的是UTF-8编码,你应该将`value`的值改为`UTF-8`。 方法二:编写自定义过滤器 ...

    struts2获取参数,解决乱码,跳转

    在这个主题中,我们将深入探讨Struts2如何获取参数、解决乱码问题以及实现页面跳转。 首先,让我们来看看Struts2如何获取HTTP请求中的参数。在Struts2中,我们可以使用Action类来接收和处理请求参数。Action类是...

    struts 中文乱码问题解决

    本文将深入探讨Struts框架中中文乱码的问题,并提供一系列有效的解决方案。 ### Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,主要用于简化Java Web应用程序的开发。它基于Servlet和JSP...

    解决struts2.1.6+spring+hibernate 中文乱码

    在Struts2项目中,可以通过修改`struts.properties`文件来指定项目的字符编码方式,从而解决中文乱码问题。具体配置如下: ```properties struts.objectFactory = spring struts.i18n.reload=true #struts.locale=...

    Struts的乱码问题

    ### Struts框架中的乱码问题解析与解决方案 #### 背景介绍 在Web开发过程中,尤其是使用Java Web框架如Struts进行项目开发时,经常遇到的一个问题是中文字符的乱码问题。这个问题主要体现在中文字符在Web页面上的...

    struts2文件下载(解决了中文乱码问题)

    在处理文件下载时,Struts2提供了一套完整的解决方案,包括处理中文文件名的乱码问题。在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行...

    Struts框架下Ajax发送中文乱码问题的解决

    总结来说,解决Struts框架下Ajax发送中文乱码问题的关键在于: 1. 确保Ajax请求时设置正确的`Content-Type`,以UTF-8编码发送数据。 2. 在Struts配置文件中配置`CharacterEncodingFilter`或在Action中手动设置请求...

    解决Struts提交中文出现乱码和提交日期型数据报错的问题

    首先,我们来讨论如何解决Struts提交中文出现乱码的问题。中文乱码通常与字符编码设置有关。在Struts中,主要涉及到以下几个环节: 1. **请求编码**:确保Web应用的`web.xml`配置文件中,`filter`部分的`filter-...

    struts2中文乱码

    ### Struts2中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Struts2框架时,中文字符的正确显示是一个常见的挑战。本篇文章将详细介绍Struts2中出现中文乱码的原因及解决方案,帮助开发者更...

    struts解决乱码问题

    本文将通过分析“struts解决乱码问题”的具体案例,来详细介绍几种常见的乱码处理技巧。 #### 一、页面(HTML) 1. **静态页面** - 在创建HTML页面时,需明确指定页面的编码格式。 - 做法: 1) 创建HTML页面时...

    struts2.1.6解决乱码 补充

    ### Struts2.1.6解决乱码问题详解 在Web开发中,字符编码问题一直是个头疼的问题,尤其是在处理中文等多字节字符时。Struts2作为一个流行的Java Web框架,同样面临着这样的挑战。本文将深入探讨如何在Struts2.1.6...

Global site tag (gtag.js) - Google Analytics