struts中文乱码问题

 Struts中文乱码问题解决

最近使用struts创建一个web应用程序的时候,被这个框架的中文乱码搞得不知东南西北了,因为web应用涉及到的编码问题确实是一个棘手的问题,因为这里面有JSP的编码、后台处理的编码问题,甚至还有数据库插入读取的编码问题,下面就这两天困扰我的并且通过我的实践解决的struts中文乱码进行详尽的说明。

①    前台JSP的中文对应:
首先介绍一下JSP上使用的两个编码语句
<%@ page language="java" import="java.util.*" ageEncoding="gb2312"%>
这里的pageEncoding指定JSP编译器在编译时已用gb2312进行编码。
<meta http-equiv="Content-Type" content="text/html; harset=gb2312">
这里的charset是HTTP相应时使用的编码,也就是IE会根据这个编码来进行相应的显示。
所与如果出现JSP显示乱码可能是上述两者的缘故。
根据我在后台进行一些信息打印处理,发现已经是乱码,所以这一定不是META标签的问题,所以在确认了pageEncoding是“gb2312”之后,我才进行了下述的处理。

②    因为struts内部通过utf-8进行编码,如果不进行相应的编码设置,就会导致在中文传输的过程中出现乱码。
创建一个MyRequestProcessor 类继承了struts的RequestProcessor  类, 
package hello;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.RequestProcessor;

public class MyRequestProcessor extends RequestProcessor {

public MyRequestProcessor() {}

protected boolean processPreprocess( HttpServletRequest request, HttpServletResponse response ){
    try{
        request.setCharacterEncoding("gb2312");
    }
    catch(Exception ex){
        System.out.println("转换失败!"); 
    }
    return true;
    }
}

③    创建好之后,需要在struts-config.xml中进行相应的配置:
<struts-config>
  
    <!-- ======== Form Bean Definitions =================================== -->
    <form-beans>
        <form-bean name="HelloForm" type="hello.HelloForm"/>
    </form-beans>

  <!-- ========== Action Mapping Definitions ============================== -->
  <action-mappings>
    <!-- Say Hello! -->
    <action    path      = "/HelloWorld"
               type      = "hello.HelloAction"
               name      = "HelloForm"
               scope     = "request"
               validate  = "true"
               input     = "/hello.jsp"
     >
        <forward name="SayHello" path="/hello.jsp" />
    </action>
  </action-mappings>
  
  <!-- ========== Message Resources Definitions =========================== -->
<controller processorClass="hello.MyRequestProcessor"></controller>
  <message-resources parameter="hello.application"/>
</struts-config>
注意这里的<controller processorClass="hello.MyRequestProcessor"></controller>不要放在最后

到次为止,所有的工作都已经完成,剩下的只是进行运行了,注意一点,在能够进行编码设置的地方都设成中文编码始终是必要的。

网上有一些关于这个的解决方法,我在使用之后并不能达到效果,原因就在于我JSP上面的编码方式并不是gb2312,所以大家的解决的时候一定要注意这一点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值