在第三章,连接器那里
中文版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这个属性设值。。。
感觉原书英文版也有错误的地方,不知道读的朋友发现没有
对“感觉原书英文版也有错误的地方,不知道读的朋友发现没有”的回应
《深入剖析Tomcat》热门书评
-
How tomcat works
7有用 0无用 JackChu 2011-10-11
How tomcat works.使用tomcat有好久的时候,从接触jsp开始,就开始使用它,但对它却一无所知。想向thread与socket方面多深入学习下,想起了好久没有使用tomcat想学习下tomcat,无意中发现了这本书。按照这本书的讲述,可以很清楚了解tomcat的整体结构,各个组件以...
-
读完此书对Servlet容器有了更加深刻的认识
2有用 1无用 Sonicery_D 2014-11-27
本书通过引领我们自己动手实现一个Servlet容器作为出发点,让我们可以在实现Servlet容器中,思索、解决问题。然后与tomcat的实现对比,达到对一些问题有比较深刻的认知。本书并不是对最新的tomcat8进行剖析,选取的tomcat4和tomcat5来进行比较。个人觉得...
-
How Tomcat works 将旅
2有用 0无用 libisthanks 2011-12-03
学习java三年时间了,接触过各种java相关的技术,但是架构方面能力很差,之前也看过很多项目源代码,但都是浅尝辄止,修改掉相应的bug就结束了,没有认真了解过任何架构设计方面的思想。于是最近下载了Tomcat的源码...
-
读书不能太过拘泥
1有用 1无用 小贝.杭州 2013-02-19
总体来说不错的一本书。但是前提是这本书是根据tomcat4&5来写的。你会发现从第三章开始你就开始慢慢有点吃力的跟节奏,书中描述的某个方法找不到,某个类找不到,我甚至为了找书中的一个类去寻找tomcat4的源码包。。然后我自己不看这本书去读tomcat的源码,大致了解之后,再回过头来翻翻这本...
-
感觉原书英文版也有错误的地方,不知道读的朋友发现没有
1有用 0无用 先谢郭嘉 2013-01-09
在第三章,连接器那里中文版43页“若存在参数jsessionid,则表明回话标识符在查询字符串中,而不在Cookie中。因此,需要调用该请求的setRequestSessionURL()方法并传入true值。否则,调用setRequestSessionURL()方法并传入false值,同时调用set...
书名: 深入剖析Tomcat
作者:
出版社: 机械工业出版社华章公司
原作名: How Tomcat Works: A Guide to Developing Your Own Java Servlet Container
译者: 曹旭东 | Paul Deck
出版年: 2011-12-31
页数: 360
定价: 59.00元
ISBN: 9787111369974