`
yly936
  • 浏览: 3911 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts1.x中的乱码问题

阅读更多

 最近学习struts1.2.9的时候,遇到了中文乱码问题,网上查找了一些文档,主要的有两种解决方式:一是添加过滤器,二是重写 RequestProcessor。现将过滤器的方式共享出来,算是struts学习中有关中文乱码的一个小的总结吧说明:jsp页面编码是utf-8,开发环境编码是gbk

  

   自定义首先,定义一个过滤器 SetCharacerEncodingFilter

 

package com.cvicse.utils;

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;

public class SetCharacterEncodingFilter3 implements Filter {

	protected String encoding = null;
	protected FilterConfig filterConfig = null;

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		this.encoding = filterConfig.getInitParameter("encoding");
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
	 *      javax.servlet.ServletResponse, javax.servlet.FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		ProcessEncoding req = new ProcessEncoding((HttpServletRequest) request,
				this.encoding);
		chain.doFilter(req, response);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
		this.encoding = null;
		this.filterConfig = null;
	}

}

 

 

  

然后,再定义一个代理请求ProcessEncoding.java,此类处理数据的编码方式的转换

 

package com.cvicse.utils;

//此类处理数据的编码方式的转换

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class ProcessEncoding extends HttpServletRequestWrapper {
	private String encoding;

	public ProcessEncoding(HttpServletRequest request, String encoding) {
		super(request);
		this.encoding = encoding;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.ServletRequestWrapper#getParameterValues(java.lang.String)
	 */
	@Override
	public String[] getParameterValues(String name) {
		String strs[] = super.getParameterValues(name);
		for (int i = 0; i < strs.length; i++) {
			strs[i] = this.encodingConversion(strs[i]);
		}
		return strs;
	}

	/*
	 * 对接收到的字符进行编码转化
	 */
	private String encodingConversion(String input) {
		String output = "";
		try {
			output = new String(input.getBytes("ISO-8859-1"), this.encoding);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return output;
	}
}

  

 

最后配置这个过滤器到web.xml中

 

<filter>
	<filter-name>SetCharacterEncoding</filter-name>
	<filter-class>
		com.cvicse.utils.SetCharacterEncodingFilter3
	</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>    
</filter>
<filter-mapping>
	<filter-name>SetCharacterEncoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>  

  

 

分享到:
评论
1 楼 lxs575208196 2012-08-18  
和你做法一样  还是没转过来,非要这样写:String department = new String(request.getParameter("department").getBytes("ISO8859-1"),"UTF-8");
可是那么多方法,那么多参数,都这么写不好吧!求指教。。。

相关推荐

    Struts1.x入门与提高系列教程.pdf

    Struts 1.x 是Apache软件基金会Jakarta项目的一部分,是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架。它使用Java Servlet和JavaServer Pages技术实现,旨在简化基于Java EE的Web应用程序的开发。 本教程...

    struts1教程.doc

    Struts 1.x 是一款基于模型-视图-控制器(MVC)设计模式的Java Web框架,它在早期的Web应用程序开发中占据了重要的地位。本教程主要针对初学者,旨在引导学习者掌握Struts 1.x的基础知识和使用方法。 在开始学习...

    Struts1.系列教程

    总之,处理Struts1.x中的属性文件乱码问题,关键在于理解Java对属性文件的处理机制,选择合适的编码格式,并利用`native2ascii.exe`或Eclipse插件进行转换和编辑。这样,无论是在开发阶段还是在实际运行环境中,都能...

    struts2.x一些技术细节资料总结

    本篇文章将详细探讨在Struts2.x中两个Action之间传递值的技术细节。 1. **Action之间的传值方案** - **方案一:Chain(链式调用)** Chain结果类型允许一个Action直接将控制权交给另一个Action,而无需重新发起...

    J2EE中Struts中四种解决中文乱码问题的方法

    ### J2EE中Struts框架下解决中文乱码问题的四种方法 在Java Web开发过程中,尤其是使用Struts框架时,经常会遇到中文乱码的问题。本文将详细介绍在J2EE环境下,利用Struts框架解决中文乱码问题的四种实用方法。 ##...

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

    在实际应用中,我们常常会遇到Ajax与服务器交互时出现中文乱码的问题,尤其是在发送和接收中文数据时。这个问题主要涉及到字符编码的处理,解决起来需要对HTTP协议、字符编码原理以及Struts框架的工作机制有一定的...

    struts1初级教程

    - **数据库连接**:使用JDBC技术连接数据库,Struts1.x中通常采用`DataSource`管理数据库连接。 - **Struts1.x jar包**:必须引入Struts1.x的jar包才能使用其功能。 #### 二、MyEclipse中创建Struts1.x项目步骤 ...

    Struts2资源文件在jsp页面中显示乱码解决

    然而,在国际化(I18N)的应用场景下,Struts2资源文件在JSP页面中显示乱码的问题常常困扰着开发者。本文将深入探讨这一问题,并详细介绍两种有效的解决方案。 ### Struts2资源文件与乱码问题 Struts2框架通过资源...

    Struts1入门教程实例

    ### Struts1.x入门教程实例知识点详解 #### 一、Struts1.x基本概念与特点 **Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)...

    struts2中文乱码解决Demo

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业...通过这个DEMO,开发者可以更好地理解和解决Struts2中的中文乱码问题,从而确保应用能够正确处理中文字符,提供良好的用户体验。

    Struts实现文件下载中文乱码解决方案

    综上所述,解决Struts文件下载中文乱码问题的关键在于统一编码方式,确保URL编码、解码和HTTP响应头中的字符集设置正确。通过以上步骤,可以有效地避免中文文件名在下载过程中出现乱码的情况。同时,注意文件的读取...

    Struts 乱码问题

    在Java Web开发中,尤其是使用Struts框架时,乱码问题是开发者常遇到的挑战之一。乱码通常出现在页面显示或后台处理数据时,表现为字符编码不一致导致的数据展示错误。本文将深入探讨Struts框架下乱码问题的原因,并...

    Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)

    在网上找了半天,看见两偏整合教程不错,把两偏整理成一偏供参考。 别人一个文档就要10分才能下,本人分不多了,扣大家5分来赚取回来。...Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)

    达内培训五个月以来的笔记:tarena_note

    14. Struts1.x note.txt 14. Struts2.x note.txt 15. Spring note.txt 16. EJB note.txt 17. WebService note.txt 18. English.txt 有朋友反映打开有些乱码,建议使用UltraEdit打开,可以无障碍使用. UltraEdit在我...

    struts,ajax乱码解决方案

    在Web开发中,乱码问题始终是一个常见的困扰,特别是对于使用Struts和Ajax技术的开发者来说。乱码问题主要出现在数据的输入、传输和展示过程中,涉及到编码格式的选择和一致性。以下是一些解决此类问题的关键点。 1...

    jsp中FilterDome(乱码过滤器源代码)

    - 如果在POST请求中遇到乱码问题,确保客户端表单的`enctype`属性设置为`application/x-www-form-urlencoded;charset=UTF-8`。 通过理解`FilterDome`的工作原理和应用,我们可以有效地解决Java Web开发中的乱码...

    框架技术-Sring_Struts整合

    为了解决中文乱码问题,需要配置CharacterEncodingFilter,设定字符编码为UTF-8,确保数据的正确解析。最后,配置Struts2的过滤器StrutsPrepareAndExecuteFilter,用于处理所有的HTTP请求。 然后,在Struts的配置...

    struts2中通过json传值解决乱码问题的实现方法

    由于中文字符在UTF-8编码和ISO-8859-1编码之间的转换差异,很容易在数据传输过程中出现乱码问题。本文将详细探讨如何在Struts2框架中通过JSON传值解决乱码问题的方法,涉及JavaScript编码和Java解码的相关操作技巧。...

Global site tag (gtag.js) - Google Analytics