`
simonhoo
  • 浏览: 70391 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

J2EE项目中解决中文传值乱码

阅读更多

★ 首先说下,这篇文章很菜,基本上是入门的东西,熟手绕道。

 

 

第一种,通常情况下,普通的JSP中,设置页面的字符集,这没有什么好说的。

            看以下代码:

            contentType="text/html; charset=UTF-8"

            pageEncoding="UTF-8"

            content="text/html; charset=UTF-8"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 第二种,普通的JAVA WEB项目中,使用Servlet过滤器,是一种不错的选择,通常选这种的比较多。

             这种方式分两步,第一,实现(implements)一个Servlet Filter;第二,web.xml中配制filter.

 

Filter实现类

/**********************************************
  * @author  Simon Hoo (simon@cottsoft.com)
  * @contact QQ:9930323 MSN: simon_hoo@msn.com
  * @OnlineSupport: http://www.CottSoft.com
  * @Create  2011-5-7
  * @version V1.0
  ********************************************/

package com.cottsoft.j2ee.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;

public class EncodingFilter implements Filter {
	private String encoding=null;
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		encoding = filterConfig.getInitParameter("encoding");
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChain) throws IOException, ServletException {
		String encoding = getEncoding();
		if(encoding!=null && !"".equals(encoding.trim())){
			request.setCharacterEncoding(encoding);
		}
		doFilter(request, response, filterChain);
	}

	@Override
	public void destroy() {

	}
	
	public String getEncoding() {
		return encoding;
	}

}
 

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

	<display-name>cottsoft</display-name>
	<welcome-file-list>
		<welcome-file>/Welcome.88</welcome-file>
	</welcome-file-list>
	
	<filter>
		<filter-name>Set Encoding Filter</filter-name>
		<filter-class>
			com.cottsoft.j2ee.filter.EncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>Set Encoding Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


</web-app>
 

第三种,在使用struts框架的J2EE项目中,如是当前项目已经配有多个其它功能的Filter,如果再配一个用于解决字符编码的Filter,就有可能该Filter功能无效(不要说不,我写这篇文章就是因为出现过该问题,才写的)。那么可以通过扩展Struts的RequestProcessor类来实现struts获取表单乱码问题。当然,也可以在web.xml中从上往下所配的第一个Filter实现类中,增加解决乱码功能,但前题是,这个Filter实现类要是允许你自己可以修改的。但这样做就不能做到功能分开的目的了。不符合相关设计原则。下面说说RequestProcessor的方式。

这种方式只能处理struts相关的请求数据。

同样也是分两步,第一步,扩展RequestProcessor类。第二步,在struts-config.xml(Struts配置文件)中配置.

 

RequestProcessor护展类

/**********************************************
  * @author  Simon Hoo (simon@cottsoft.com)
  * @contact QQ:9930323 MSN: simon_hoo@msn.com
  * @OnlineSupport: http://www.CottSoft.com
  * @Create  2011-4-23
  * @version V1.0
  ********************************************/

package com.cottsoft.common;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.RequestProcessor;


public class CottSoftRequestProcessor extends RequestProcessor {
	@Override
	public void process(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		request.setCharacterEncoding("UTF-8");
		super.process(request, response);
	}
}

 

struts-config.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://struts.apache.org/dtds/struts-config_1_2.dtd">
         
<struts-config>
  <data-sources />
  <form-beans>
 
  </form-beans>
  
  <global-exceptions />
  
  <global-forwards>
    	<forward name="welcome" path="/welcome.88"></forward>
   </global-forwards>
   
    <action path="/welcome" 
    		type="com.cottsoft.website.web.action.WelcomeAction"
    		name="WelcomeForm"
    		attribute="WelcomeForm"
    		scope="request"
    		input="/welcome.jsp">
    		<forward name="index" path="/index.jsp"></forward>
    </action>

  </action-mappings>
  
  <controller processorClass="com.cottsoft.common.CottSoftRequestProcessor"></controller>
  
  <message-resources parameter="com.cottsoft.website.resources.ApplicationResources"/>
  
</struts-config>

 

当然,还有其它,比如说从数据库角度考虑来处理中文的,很多种方式,这里就不一一列写了。

0
4
分享到:
评论

相关推荐

    j2ee项目中中文乱码问题集锦

    本文将围绕一个典型的案例来详细分析如何解决J2EE项目中的中文乱码问题,并总结出一系列实用的方法。 #### 一、问题背景与原因分析 在J2EE应用中,中文乱码主要出现在以下几个环节:用户输入数据时、服务器处理...

    J2ee应用中文乱码问题解决方案.doc

    总结来说,解决J2EE应用中文乱码问题的关键在于理解字符集的原理,并在每个可能引起乱码的环节进行相应的编码设置。通过统一编码标准,尤其是使用广泛支持的UTF-8,可以显著减少乱码出现的可能性。在开发过程中,...

    J2EE乱码问题解决方法

    本文将详细介绍如何解决J2EE应用程序中的乱码问题,并提供实际操作步骤。 #### 一、J2EE乱码问题概述 在J2EE环境中,常见的乱码问题主要来源于以下几个方面: 1. **服务器配置**:如Tomcat等Web容器的默认字符集...

    解决J2EE开发中乱码问题

    J2EE开发中遇到的乱码问题是一个常见的困扰,尤其是在处理中文字符时。本文将详细介绍如何解决这些问题,以一个基于Eclipse 3.3 + MyEclipse 6.0 + Tomcat 5.5的项目为例,该项目采用了Ext、Struts和Hibernate框架。...

    j2ee中文乱码问题终极解决之道

    总之,解决Java/J2EE中的中文乱码问题需要深入理解编码机制,合理配置系统环境,统一应用系统编码,并在各个层次进行适配和转换。通过以上所述的多种策略和方法,开发者可以有效地预防和解决乱码问题,确保应用的...

    J2EE项目开发与设计随书源码

    在J2EE项目中,Servlet常用于接收客户端请求,处理业务逻辑,并将结果返回给用户。 2. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码。它简化了视图层的开发,使页面...

    简单的j2ee项目

    11. **MVC(Model-View-Controller)模式**:在J2EE项目中,理解如何实现MVC架构对于组织代码和设计良好的应用至关重要。 通过这个简单的J2EE项目,开发者可以逐步熟悉这些核心概念和技术,为后续的进阶学习打下...

    j2ee项目中所用到的包

    这个压缩包“j2ee项目中所用到的包”包含了在J2EE项目中常用的框架和库,使得开发者能够快速搭建开发环境,减少寻找和配置组件的时间,提高开发效率。 首先,我们来看看其中的一个关键组件——Hibernate。Hibernate...

    经典J2EE项目案例

    经典J2EE项目案例 从给定的文件信息中,我们可以提取出以下知识点: 1. 项目开发环境和工具 * 项目开发环境:Tomcat6.0、IE10、Firefox8.0、JDK1.7、Windows 7 * 项目开发工具:MyEclipse9.0、Mysql、JUnit 2. ...

    J2EE项目实例源码

    总的来说,"J2EE项目实例源码"提供了一个实践性的学习案例,涵盖了J2EE应用开发中的数据库设计、连接、业务逻辑处理以及视图展现等多个关键环节。通过研究这个项目,开发者可以深化对J2EE平台的理解,提升实际项目...

    软件测试技术在J2EE项目中的应用

    软件测试技术在J2EE项目中的应用至关重要,因为J2EE平台是企业级应用开发的基石,尤其在大型电子商务等领域,软件质量的高低直接影响到企业的运营和用户体验。J2EE基于Java2平台,提供了一种简化企业解决方案开发、...

    简单的J2EE项目

    在J2EE项目中,模型通常由EJB或普通Java类实现,视图是JSP,控制器可能是Servlet或JSF(JavaServer Faces)组件。 5. **JDBC与数据库交互**:JDBC是Java中连接和操作数据库的标准接口。在本项目中,开发者可能使用...

    j2ee项目开发案例

    在《J2EE案例开发》这个压缩包中,你可能会找到一个完整的J2EE项目实例,包括源代码、配置文件、数据库脚本等,通过学习和分析这个案例,你可以更好地理解上述知识点如何在实际项目中应用。记得动手实践,理论结合...

    J2EE项目开发实用案例

    本书汇集了大量企业级应用项目开发的经验,归纳了不同项目中使用的框架、模式、设计方法、开发方法,形成一个完整的技术体系和指导方法,以供用J2EE进行项目开发的初级人员和有一定经验的高级开发人员阅读。...

    J2EE中文问题终极解决之道

    ### J2EE中文乱码问题终极解决之道 在开发基于J2EE的应用系统时,中文乱码问题是开发者经常遇到的一个难题。本篇文章旨在提供一种全面、深入的解决方案,帮助开发者彻底解决这一问题。 #### 一、理解编码机制 在...

    J2EE平台下的乱码问题分析及解决

    总之,解决J2EE平台下的乱码问题,需要从编码的来源、转换和目标各方面进行细致分析,并采取适当的措施确保整个数据流转过程中的字符编码一致性。通过合理的编码管理,可以有效地避免乱码问题,保证信息系统稳定可靠...

    J2EE项目案例源代码

    通过深入研究提供的J2EE项目案例源代码,初学者不仅可以学习到如何在实际项目中应用这些技术,还能了解如何组织代码结构,遵循设计模式,以及如何有效地利用J2EE提供的服务。这将有助于他们快速提升在企业级Java开发...

    j2ee项目开发经验分享

    j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发...

Global site tag (gtag.js) - Google Analytics