encode

oyhuang 2010-01-24 08:52:23
public class CharacterFilter implements Filter{

private String oldEncoding;
private String newEncoding;
public void destroy() {
System.out.println("过滤器销毁");
}

public void doFilter(ServletRequest servletrequest,
ServletResponse servletresponse, FilterChain filterchain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletrequest;
HttpServletResponse response = (HttpServletResponse)servletresponse;
//判断请求方式是get还是post
String method= request.getMethod();
if(method.equalsIgnoreCase("post")){
request.setCharacterEncoding(this.newEncoding);
response.setCharacterEncoding(this.newEncoding);
}else{
//首先应该获得所有参数的值
Map map = request.getParameterMap();
//所有的值
Collection coll = map.values();
Iterator it =coll.iterator();
while(it.hasNext()){
//取出集合中每个元素并转型成String数组
String[] str = (String[])it.next();
for(int i=0;i<str.length;i++){
str[i] = new String(str[i].getBytes(this.oldEncoding),this.newEncoding);
}
}
response.setCharacterEncoding(this.newEncoding);

}
System.out.println("过滤器执行完成。。开始放行");
//放行
filterchain.doFilter(request, response);
}

public void init(FilterConfig filterconfig) throws ServletException {
oldEncoding = filterconfig.getInitParameter("oldEn");
newEncoding = filterconfig.getInitParameter("newEn");
System.out.println("过滤器开始");
}

}
while 中的代码有点不理解,感觉把request中的数据拿出来转码后,并没有再放回request中去啊,为什么后面的程序从request中取到的是转码后的数据
...全文
84 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
牛叔 2010-01-24
  • 打赏
  • 举报
回复
filterchain.doFilter(request, response);

13,100

社区成员

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

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