感觉原书英文版也有错误的地方,不知道读的朋友发现没有_深入剖析Tomcat书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 深入剖析Tomcat > 感觉原书英文版也有错误的地方,不知道读的朋友发现没有
先谢郭嘉 深入剖析Tomcat 的书评 发表时间:2013-01-09 01:01:23

感觉原书英文版也有错误的地方,不知道读的朋友发现没有

在第三章,连接器那里
中文版43页“若存在参数jsessionid,则表明回话标识符在查询字符串中,而不在Cookie中。因此,需要调用该请求的setRequestSessionURL()方法并传入true值。否则,调用setRequestSessionURL()方法并传入false值,同时调用setRequestedSessionURL()方法并传入null……”

我开始看的时候就被搞糊涂了.setRequestedSessionURL()和setRequestSessionURL()有什么区别,为什么一个传入boolean值一个传入对象呢?

是不是中文译者笔误?我就跑到作者官网下了一份英文版试读,发现原版就这么写的。既然不是译者的错误,那作者要表达什么?我又通过作者提供的Tomcat源码发现HttpRequest接口里并没有setRequestSessionURL()方法,只有setRequestedSessionURL()方法。再看一下接口的定义“Set a flag indicating whether or not the requested session ID for this request came in through a URL. This is normally called by the HTTP Connector, when it parses the request headers”
翻译过来就是“设置一个标记用来指示本次请求所请求到的session id是否是来自URL,这通常由HTTPConnector来调用,当它解析request头的时候”(大概是这个意思)。也就是说true或者false是用来指示session id是否源自cookie。

故而上面的setRequestSessionURL()应该改为setRequestedSessionURL()。那么既然这个方法要求传入boolean值,那么显然后面的传入null是不对的(1.4)。另外也没必要在传入false的时候再传一次null,所以可想而知,setRequestedSessionURL(null)这个代码也是作者的笔误。那么应该改成什么呢?

通过上下文不难看出这段代码大概是要往request里设置一个值。设置什么样的值?跟session有关的。再查一下tomcat接口的源码只发现了一个这样的接口

    /**
     * Set the requested session ID for this request. This is normally called
     * by the HTTP Connector, when it parses the request headers.
     *
     * @param id The new session id
     */
    public void setRequestedSessionId(String id);

翻译一下上面的解释就是。“为本次请求设置请求到session id”。再来结合作者语境:“若存在参数jsessionid,则表明回话标识符在查询字符串中,而不在Cookie中。因此,需要调用该请求的setRequestSessionURL()方法并传入true值。否则,调用setRequestSessionURL()方法并传入false值,同时调用setRequestedSessionURL()方法并传入null……”

作者想要说这个session id不是来自 URL,也就是说是来自cookie。
所以调用了setRequestedSessionURL(false);注意,是更正后的Requested。那么再调用request.setRequestedSessionId(null);的意思就是,这次请求到的session id不是来自URL,所以不往requestedSessionId这个属性设值。。。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“感觉原书英文版也有错误的地方,不知道读的朋友发现没有”的回应

ling 2013-04-29 13:40:10

开始看你的文感觉好复杂好正经好严肃,然后看见下面的回复瞬间萌了。。天然呆(((o(*゚▽゚*)o)))

先谢郭嘉 2013-01-09 01:39:09

我靠,不好意思。。。。说了这么一大段废话。。。原来这段话的上面有原代码,代码里面写的很清楚,下面的解释的确是笔误。。。不过事实证明我的推测是正确的。。。虽然完全不用推测。。。。我去!