<jsp:include>中的页面属性,包含@WebServlet和web.xml </jsp:include>

时间:2015-02-19 12:18:10

标签: java jsp servlets web.xml

不要评论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

1 个答案:

答案 0 :(得分:1)

  • 在开头没有斜杠,您包含一个相对于当前JSP页面的文件。
  • 在开头使用斜杠,您包含一个相对于Web应用程序的上下文路径的文件(URL以斜杠开头)