tomcat setCharacterEncoding 实现原理

仅仅作为日常笔记用~~
tomcat的HttpServletRequest实现类为 RequestFacade

package org.apache.catalina.connector; 
public class RequestFacade implements HttpServletRequest

RequestFacade 中使用了 
org.apache.catalina.connector.Request类来处理数据比如:
getParameter();获取属性 
setCharacterEncoding(String env) 设置编码格式

例如:
当用户在过滤器中设置了 res.setCharacterEncoding ("GBK");
tomcat执行的时候会 调用RequestFacade.setCharacterEncoding (String env);
RequestFacade.setCharacterEncoding (String env);方法内部会调用
Request.setCharacterEncoding(String env)把编码传递给Request
Request.setCharacterEncoding(String env);方法内部会调用
org.apache.coyote.Request类的setCharacterEncoding(String env);
把编码保存在 org.apache.coyote.Request 的charEncoding属性中


那程序时如何使用这个编码的呢?
当用户在过滤器或者servlet中调用getParameter(String name)来获取属性的时候
方法调用如下流程---->RequestFacade.getParameter(String name)--->
org.apache.catalina.connector.Request的getParameter(String name)--->此处会先调用parseParameters把编码传递给coyoteRequesorg.apache.coyote.Request.coyoteRequest的getParameters().getParameter(name); 先获取org.apache.tomcat.util.http.Parameters然后调用getParameter----->转码------>getParameterValues(name)---->最后从HashTable中取值





你可能感兴趣的:(apache,tomcat,servlet)