struts1乱码问题

benbenxiong001 2010-01-27 11:06:18
jsp头部:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
goodsName是需要在表单中录入,是中文的,在Action内取得后存到request内,后面作为URL参数传递
Action取得的方法是:
if(request.getParameter("goodsName") != null){
goodsName = new String(request.getParameter("goodsName").getBytes("ISO-8859-1"),"gb2312");
System.out.println(goodsName); //此处打印出来的是乱码
}

url:
goodsMaint.do?command=query&goodsName=${requestScope.goodsName}
处理编码的过滤器我也用了,代码如下:
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;

public class EncodeFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
chain.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {

}

}

在web.xml中的配置如下:
<!-- 配置处理乱码的filter -->
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>com.lchq.filter.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

在tomcat中也做了如下配置:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="gb2312"/>

结果还是出现了乱码:'???'

不知道我说清楚没,请各位高手大哥帮忙看看问题所在!!!
...全文
332 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenxiong001 2010-01-29
  • 打赏
  • 举报
回复
谢谢各位!!
最后我是这样解决的:
在tomcat中也做了如下配置:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="gb2312"/>
再Action里,有GoodsForm gf = (GoodsForm)form;
gf.getXXX();得到的就不是乱码了。
街头小贩 2010-01-28
  • 打赏
  • 举报
回复
我是这样作的.以下以一个搜索为例
请表单到服务器.用Request.setAttribute.上面说了是没问题.分页时都绑定在URL中.在绑定之前用
URLEncoder.encode('中文', Charset.defaultCharset().name())

读的时候先
String a=URLDecoder.decode(parameter)
a=new String(a.getBytes("ISO-8859-1"),"GBK"); //GBK是JVM的默认字符集
街头小贩 2010-01-28
  • 打赏
  • 举报
回复
URL地址的QueryString不受"请求和响应"的过滤器作用
但如果你是存在Request.setAttribute中.过滤器可以帮上你
街头小贩 2010-01-28
  • 打赏
  • 举报
回复
jsp头部(A.jsp)==goodsMaint.do(是绑定的A.jsp)吗?

10,608

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧