P185:[color=indigo]“如果Package没有指定namespace,那么它处于默认命名空间,而默认命名空间里的Action可以处理任何命名空间的Action请求,但是根命名空间只处理根命名空间下的Action请求。”[/color]
[color=red]实验证明:跟命名空间也可以处理任何命名空间的Action请求,所以,没有指定namespace和指定namespace="/"效果是一样的,都会去捡漏。[/color]
P185:[color=indigo]“命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action,系统将在/bookservice/search/命名空间下查找名为get的Action,如果找不到就直接转入默认命名空间查找名为get的Action,而不会在/bookservice的命名空间下查找名为get的Action。”[/color]
[color=red]实验证明:它会去/bookservice下查找名为get的Action,如果这样仍然找不到才会转入默认命名空间查找。[/color]
P181:[color=indigo]“在Action中获取的HttpServletResponse对象无法生成服务器响应。”[/color]
[color=red]实验证明:如果在Action使用HttpServletResponse对象对服务器生成响应,例如:"response.getWriter().println("Hello world");",同时指定返回的逻辑资源字符串为null,那么照样可以绕过struts直接生成响应,在interceptor中也一样可以这样做。[/color]
P357:[color=indigo]“添加了transient的属性不会被序列化;没有setter和getter方法的属性不会被序列化。”[/color]
[color=red]实验证明:添加了transient的属性仍然会被序列化;准确的说,没有getter方法的属性不会被序列化。[/color]
[color=red]实验证明:跟命名空间也可以处理任何命名空间的Action请求,所以,没有指定namespace和指定namespace="/"效果是一样的,都会去捡漏。[/color]
P185:[color=indigo]“命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action,系统将在/bookservice/search/命名空间下查找名为get的Action,如果找不到就直接转入默认命名空间查找名为get的Action,而不会在/bookservice的命名空间下查找名为get的Action。”[/color]
[color=red]实验证明:它会去/bookservice下查找名为get的Action,如果这样仍然找不到才会转入默认命名空间查找。[/color]
P181:[color=indigo]“在Action中获取的HttpServletResponse对象无法生成服务器响应。”[/color]
[color=red]实验证明:如果在Action使用HttpServletResponse对象对服务器生成响应,例如:"response.getWriter().println("Hello world");",同时指定返回的逻辑资源字符串为null,那么照样可以绕过struts直接生成响应,在interceptor中也一样可以这样做。[/color]
P357:[color=indigo]“添加了transient的属性不会被序列化;没有setter和getter方法的属性不会被序列化。”[/color]
[color=red]实验证明:添加了transient的属性仍然会被序列化;准确的说,没有getter方法的属性不会被序列化。[/color]