<jsp:include> 中的页面属性与 @WebServlet 和 web.xml
page attribute in <jsp:include> with @WebServlet and web.xml
不要对 Java 中的包命名约定发表评论。
包里面有一个Servlet Ch7ActionTags映射到
@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>
所以,显而易见的问题是为什么在处理 2 种可能的情况时存在 / 的差异:
<jsp:include page="/FlavorListServlet"></jsp:include> works with @WebServlet
<jsp:include page="FlavorListServlet"></jsp:include> works with web.xml
- 如果开头没有斜线,则包含一个与当前 JSP 页面相关的文件。
- 如果以斜杠开头,则包含一个与 Web 应用程序的上下文路径相关的文件(URL 以斜杠开头)
不要对 Java 中的包命名约定发表评论。
包里面有一个Servlet Ch7ActionTags映射到
@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>
所以,显而易见的问题是为什么在处理 2 种可能的情况时存在 / 的差异:
<jsp:include page="/FlavorListServlet"></jsp:include> works with @WebServlet
<jsp:include page="FlavorListServlet"></jsp:include> works with web.xml
- 如果开头没有斜线,则包含一个与当前 JSP 页面相关的文件。
- 如果以斜杠开头,则包含一个与 Web 应用程序的上下文路径相关的文件(URL 以斜杠开头)