不要评论Java中命名包中使用的约定。
Ch7ActionTags 包中有一个Servlet,用
映射@WebServlet("/FlavorListServlet")
我的jsp页面位于 WebContent 下的文件夹中,其路径为:
/Ch7RequestDispatching/ActionTags/MyPage.jsp
上面提到的servlet就像这样包含在这个jsp页面中。
<jsp:include page="/FlavorListServlet"></jsp:include>
当我尝试运行此jsp页面时,浏览器中的url反映为
http://localhost:7860/Phil_Hanna/Ch7RequestDispatching/ActionTags/MyPage.jsp
并成功包含了servlet。
我尝试使用正斜杠 /
但这些也不起作用:
<jsp:include page="FlavorListServlet"></jsp:include>
<jsp:include page="/Ch7RequestDispatching/ActionTags/FlavorListServlet"></jsp:include>
现在进行相同的过程( 通过web.xml文件中的servlet-mapping替换@WebServlet注释 )
<servlet>
<servlet-name>FlavorListServletName</servlet-name>
<servlet-class>Ch7ActionTags.FlavorListServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlavorListServletName</servlet-name>
<url-paatern>/Ch7RequestDispatching/ActionTags/FlavorListServlet
</url-pattern>
</servlet-mapping>
我的jsp页面现在:
<jsp:include page="FlavorListServlet"></jsp:include> <%-- / is absent here --%>
通过上面的映射,成功地包含了servlet内容。
但这不起作用,
<jsp:include page="/FlavorListServlet"></jsp:include>
因此,显而易见的问题是,在处理两种可能的情况时,为什么 / 存在差异:
<jsp:include page="/FlavorListServlet"></jsp:include> works with @WebServlet
<jsp:include page="FlavorListServlet"></jsp:include> works with web.xml
答案 0 :(得分:1)