【问题标题】:page attribute in <jsp:include> with @WebServlet and web.xml<jsp:include> 中的页面属性与 @WebServlet 和 web.xml
【发布时间】:2015-02-19 12:18:09
【问题描述】:

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

所以,显而易见的问题是为什么在处理 2 种可能的情况时会有 / 的差异:

<jsp:include page="/FlavorListServlet"></jsp:include> works with @WebServlet
<jsp:include page="FlavorListServlet"></jsp:include>  works with web.xml

【问题讨论】:

    标签: java jsp servlets web.xml


    【解决方案1】:
    • 开头没有斜线,您包含一个相对于当前 JSP 页面的文件。
    • 以斜线开头,包含一个与 Web 应用程序的上下文路径相关的文件(URL 以斜线开头)

    【讨论】:

    • 萨瓦德:我支持你。但是您能否详细说明第二点。第一个pt。我很清楚。
    • @ShirgillAnsari 通常,Web 应用程序上下文路径是您的 war 文件的名称。
    • @Savard:非常感谢你帮助我。
    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 2018-10-07
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多