最近学习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>
分享到:
相关推荐
Struts 1.x 是Apache软件基金会Jakarta项目的一部分,是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架。它使用Java Servlet和JavaServer Pages技术实现,旨在简化基于Java EE的Web应用程序的开发。 本教程...
Struts 1.x 是一款基于模型-视图-控制器(MVC)设计模式的Java Web框架,它在早期的Web应用程序开发中占据了重要的地位。本教程主要针对初学者,旨在引导学习者掌握Struts 1.x的基础知识和使用方法。 在开始学习...
总之,处理Struts1.x中的属性文件乱码问题,关键在于理解Java对属性文件的处理机制,选择合适的编码格式,并利用`native2ascii.exe`或Eclipse插件进行转换和编辑。这样,无论是在开发阶段还是在实际运行环境中,都能...
本篇文章将详细探讨在Struts2.x中两个Action之间传递值的技术细节。 1. **Action之间的传值方案** - **方案一:Chain(链式调用)** Chain结果类型允许一个Action直接将控制权交给另一个Action,而无需重新发起...
### J2EE中Struts框架下解决中文乱码问题的四种方法 在Java Web开发过程中,尤其是使用Struts框架时,经常会遇到中文乱码的问题。本文将详细介绍在J2EE环境下,利用Struts框架解决中文乱码问题的四种实用方法。 ##...
在实际应用中,我们常常会遇到Ajax与服务器交互时出现中文乱码的问题,尤其是在发送和接收中文数据时。这个问题主要涉及到字符编码的处理,解决起来需要对HTTP协议、字符编码原理以及Struts框架的工作机制有一定的...
- **数据库连接**:使用JDBC技术连接数据库,Struts1.x中通常采用`DataSource`管理数据库连接。 - **Struts1.x jar包**:必须引入Struts1.x的jar包才能使用其功能。 #### 二、MyEclipse中创建Struts1.x项目步骤 ...
然而,在国际化(I18N)的应用场景下,Struts2资源文件在JSP页面中显示乱码的问题常常困扰着开发者。本文将深入探讨这一问题,并详细介绍两种有效的解决方案。 ### Struts2资源文件与乱码问题 Struts2框架通过资源...
### Struts1.x入门教程实例知识点详解 #### 一、Struts1.x基本概念与特点 **Struts1.x**是Apache Struts的第一个版本,它是一个用于构建企业级Java Web应用的开源框架。该框架基于MVC(Model-View-Controller)...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业...通过这个DEMO,开发者可以更好地理解和解决Struts2中的中文乱码问题,从而确保应用能够正确处理中文字符,提供良好的用户体验。
综上所述,解决Struts文件下载中文乱码问题的关键在于统一编码方式,确保URL编码、解码和HTTP响应头中的字符集设置正确。通过以上步骤,可以有效地避免中文文件名在下载过程中出现乱码的情况。同时,注意文件的读取...
在Java Web开发中,尤其是使用Struts框架时,乱码问题是开发者常遇到的挑战之一。乱码通常出现在页面显示或后台处理数据时,表现为字符编码不一致导致的数据展示错误。本文将深入探讨Struts框架下乱码问题的原因,并...
在网上找了半天,看见两偏整合教程不错,把两偏整理成一偏供参考。 别人一个文档就要10分才能下,本人分不多了,扣大家5分来赚取回来。...Ckeditor3.X与ckfinder2.X整合forJAVA (支持文件上传,解决中文乱码)
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在我...
在Web开发中,乱码问题始终是一个常见的困扰,特别是对于使用Struts和Ajax技术的开发者来说。乱码问题主要出现在数据的输入、传输和展示过程中,涉及到编码格式的选择和一致性。以下是一些解决此类问题的关键点。 1...
- 如果在POST请求中遇到乱码问题,确保客户端表单的`enctype`属性设置为`application/x-www-form-urlencoded;charset=UTF-8`。 通过理解`FilterDome`的工作原理和应用,我们可以有效地解决Java Web开发中的乱码...
为了解决中文乱码问题,需要配置CharacterEncodingFilter,设定字符编码为UTF-8,确保数据的正确解析。最后,配置Struts2的过滤器StrutsPrepareAndExecuteFilter,用于处理所有的HTTP请求。 然后,在Struts的配置...
由于中文字符在UTF-8编码和ISO-8859-1编码之间的转换差异,很容易在数据传输过程中出现乱码问题。本文将详细探讨如何在Struts2框架中通过JSON传值解决乱码问题的方法,涉及JavaScript编码和Java解码的相关操作技巧。...