1. We need not declare all servlets of a web application under web.xml. We can always access it through the standard way. http://server
2.Regarding your page 72 question, I assume the web application is mapped to default application. There are container specific ways to map a web app to default app. So in this case the servletContext name is just ""
If you have Tomcat installed check on conf\server.xml for these lines which does this kind of mapping.
<!-- Tomcat Root Context -->
<Context path="" docBase="ROOT" debug="0"/>
3. Reg. page 77 question, /blue/ does not have a * after the slash , meaning we have to have the exact uri mapping of /blue/. On the other hand /red/* means either /red or /red/ or /red/test will be mapped right.
4. The uri attribute <%@ taglib .... /> directive can in fact have absolute / root relative / non-root relative URIs.
But the important point is if this attribute is assigned with an absolute URI then it MUST have a mapping in web.xml like below.
<taglib-uri> absoluteURI here </taglib-uri>
<taglib-location> some val </taglib-location>
If there is no mapping found, then only we will get an error.
Please read that section more closely. The section is written as an if ..... else if .... way/
Notice the tabbed format of the bulleted points.