java action中文乱码_Struts2中action接收中文参数为乱码解决方法

老实说,中文乱码问题是每个程序员会经常遇到的问题,而且也是一个很头疼的问题。网上很多关于解决中文乱码的帖子,看几个之后你会发现大都是一样的。但是我们照着做,却还是无法解决乱码问题。我也是看了好多帖子,好多解决方法,最后把几个方法结合起来,修改一下就可以用了。废话少说,下面进入正题。

首先Struts默认的编码方式是utf-8,出现乱码首先检查jsp页面的编码方式是否也是utf-8,也许你会很奇怪,为什么统一了编码方式,还是出现乱码呢?原因是jsp网页发送请求request,默认编码是ISO-8859-1。也就是说,虽然你Jsp页面设置的编码方式是utf-8,但是把中文参数发送出去,系统默认把参数以ISO-8859-1编码方式放到request中了。

下面是针对post方式提交请求解决中文乱码的方法:

1.编写过滤器:

package org.filter;

import java.io.IOException;

import java.net.URLDecoder;

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

@Override

public void doFilter(ServletRequest sRequest, ServletResponse sResponse,

FilterChain filterChain) throws IOException, ServletException

{

HttpServletRequest request = (HttpServletRequest) sRequest;

HttpServletResponse response = (HttpServletResponse) sResponse;

// 设置字符集

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

filterChain.doFilter(request, response);

}

@Override

public void destroy() {

// TODO Auto-generated method stub

}

@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

2.配置web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

CharsetEncodingFilter

org.filter.CharsetEncodingFilter

CharsetEncodingFilter

/*

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

通过以上方法,把所有请求的编码方式都设成了utf-8。如果没有用到struts2,上面第二个开始的代码就不要写上了。用第一个filter就可以了。希望可以帮到更多因为中文乱码烦心的朋友们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值