首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts工程form表单提交乱码有关问题  多谢了用了 几种方法都不行

2012-02-23 
struts工程form表单提交乱码问题  谢谢了用了 几种方法都不行啊publicclassMyRequestProcessorextendsRequ

struts工程form表单提交乱码问题  谢谢了用了 几种方法都不行啊
public   class   MyRequestProcessor   extends   RequestProcessor{
  public   MyRequestProcessor(){}
  protected   boolean   processPreprocess(HttpServletRequest   request,
      HttpServletResponse   response){
    try{
      request.setCharacterEncoding( "GBK ");//在此设置字符集
    }
    catch(Exception   ex){
      System.out.println( "字符集设置失败 ");
    }
    return   true;
  }
}

在struts-config.xml中
<controller   processorClass= "com.ccu.bbs.requestprocessor.MyRequestProcessor "   />


就是不好用 是什么原因呢?

[解决办法]
package app;

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)
{
ex.printStackTrace();
}
return true;
}


}
改成gb2312
[解决办法]
用过滤器吧
[解决办法]
应改没有问题的。。。
你重新启动一下在看看
[解决办法]
用这个方法吧:

public String getStr(String str)
{
try
{
byte[] bt = str.getBytes( "ISO8859-1 ");
String temp = new String(bt);
}catch(Exception e)
{
}
return temp;
}
[解决办法]

解决页面上的中文显示或者Form提交会乱码的问题,在web.xml加入字符集过滤,如下:
<filter>
<filter-name> charsetFilter </filter-name>
<filter-class> com.company.filter.CharsetFilter </filter-class>
<init-param>
<param-name> charsetEncodingType </param-name>
<param-value> gb2312 </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> charsetFilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
对应的com.company.filter.CharsetFilter类如下:

package com.company.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;
import org.apache.commons.lang.StringUtils;

public class CharsetFilter implements Filter{

private static final String characterEncodingType= "charsetEncodingType ";
private static final String defaultCharsetEncode= "gb2312 ";
private String charsetEncode=null;

public void init(FilterConfig arg0) throws ServletException {
charsetEncode=arg0.getInitParameter(characterEncodingType);
if(StringUtils.isEmpty(charsetEncode)){
System.out.println( "characterEncodingType is empty. so default is gb2312 ");


charsetEncode=defaultCharsetEncode;
}
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
request.setCharacterEncoding(charsetEncode);
filterChain.doFilter(request,response);
}

public void destroy(){}

}
另外,页面上也要设置charset为gb2312

[解决办法]
你只改了获得参数时的编码,但是根本没有体现你form中参数原来的编码,出现乱码很正常。
包含form的JSP页面的编码是什么?response.setCharacterEncoding为何值?

热点排行