Struts2中文乱码解决办法

原创 2016年05月31日 14:39:39

前沿

Struts2中文乱码解决办法
**首先确定是哪里乱码,大致可分为这几种:

  1. 页面乱码
  2. action中接收参数乱码
  3. 数据库乱码

**
这里我只说action中的乱码问题
判断是不是后台乱码,可以system控制台输出一下看看就行了

解决办法

设置过滤器

package com.jjp.filter;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

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.HttpServletRequestWrapper;

public class EncodingFilter implements Filter{
    private String encoding;
    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if(encoding==null||"".equals(encoding)){
            encoding="utf-8";
        }
        //解决的post请求
        request.setCharacterEncoding(encoding);
        response.setCharacterEncoding(encoding);
        chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request){
            @Override
            public String getParameter(String name) {
                //对于get请求特殊处理
                if("get".equals(this.getMethod().toLowerCase())){
                    String value=super.getParameter(name);
                    try {
                        if(value!=null)
                        return new String(value.getBytes("iso-8859-1"),encoding);
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    return value;
                }
                return super.getParameter(name);
            }
        }, response);

    }

    @Override
    public void init(FilterConfig config) throws ServletException {
        encoding=config.getInitParameter("encode");

    }

}

然后再web.xml中写配置信息


<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>com.jjp.filter.EncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

需要注意的是这个配置信息,必须放在所有的filter的最前面

版权声明:开源精神,欢迎转载

Struts2 Action中文乱码问题的解决办法

一、前台表单 组织名称: 组织描述:
  • motrsky
  • motrsky
  • 2016年09月23日 14:59
  • 2281

struts2 中文乱码解决办法

 适合情况 -> 从jsp传入到action时的乱码情况,这里以GBK为例 1.建立一个用于转换编码的filter文件位置举例:src.util.SetCharacterEncodingFilter....
  • beiouwolf
  • beiouwolf
  • 2009年08月26日 13:17
  • 9192

struts2中文乱码解决办法

根据filter的执行顺序知,会先执行CharacterEncoding过滤器,再执行Struts2过滤器。 CharacterEncodingFilter的核心doFilterInternal方法如...
  • hjjzhangkui
  • hjjzhangkui
  • 2010年08月17日 21:57
  • 1372

Struts2中文乱码解决办法

在struts.xml 中 加入   就可以了  因为struts默认为utf-8编码 
  • luckyspring
  • luckyspring
  • 2009年06月18日 23:52
  • 379

struts2中文件下载以及中文乱码

昨天在试着做一个使用struts2文件下载的功能,基本上没有考虑到乱码的问题,因为当时文件都是以数字进行命名的,下载过程中没有出现问题。 下面给出代码, Action类, public clas...
  • wojiaohuangyu
  • wojiaohuangyu
  • 2016年05月30日 17:36
  • 2026

struts2接受中文乱码

问题描述: Action中有某一属性,并设有响应的getter/setter方法,前台提交中文数据时Action接收乱码。 解决方案: 1.在struts.xml中加入 2.然后打开to...
  • u013410747
  • u013410747
  • 2015年12月02日 09:17
  • 1030

struts2 文件下载中文乱码问题解决方案

问题描述:1.前台jsp页面通过?传递中文参数,action中接收出现乱码 2.下载文件时,中文文件无法显示。 解决方案:1.在网上查了资料通过在jsp页面上urlencode可以解决,但是我改为传...
  • superdcj
  • superdcj
  • 2013年10月24日 12:13
  • 1054

解决struts2以GET方式提交表单中文乱码问题

之前用POST方式提交表单一直没有遇到中文乱码的方式,最近使用GET方式提交,发现中文乱码。 检测了struts.xml和web.xml等地方读配置好了 struts.xml web.xml...
  • lixwjava
  • lixwjava
  • 2015年11月29日 17:25
  • 1935

struts2解决中文字符乱码

1.创建过滤器类: import java.io.IOException; import javax.servlet.*; public class SetCharacter...
  • nbdota
  • nbdota
  • 2016年10月05日 16:37
  • 614

struts2配置文件中url传递参数中文乱码处理

配置文件   [html] view plaincopy action name="sort*" class="sortManage" method=...
  • huchunlinnk
  • huchunlinnk
  • 2014年05月21日 09:50
  • 806
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2中文乱码解决办法
举报原因:
原因补充:

(最多只允许输入30个字)