现象是:更新操作完成后,本应该是中文的字段都莫名其妙变成了乱码。
比较了两个版本的代码,经过排除后,发现问题出在一个filter中,下面是出问题的代码:
public class MyFilter extends StrutsPrepareAndExecuteFilter { public void doFilter (ServletRequest servletRequest......) { HttpServletRequest request =(HttpServletRequest)servletrequest; // 就是这一行,如果没有这一行,就不会出现乱码的现象 (String) name = request.getParameter("person.name"); ... ... super.doFilter(.....); }}}
解决办法:
web.xml 增加编码过滤器办法来自百度:EnCodingFilter 实现类public class EncodingFilter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException { this.encoding = config.getInitParameter("encoding"); if (StringUtils.isNullOrBlank(this.encoding)) { this.encoding = "UTF-8"; }} public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) srequest; request.setCharacterEncoding(encoding); chain.doFilter(srequest, sresponse); }public void destroy() { }} encoding com.skysz.framework.filter.encoding.EncodingFilter