Eclipse:jsp:include 使用 servlet 的操作

Eclipse: jsp:include action with servlet

嗯,这里又敲了一个假设没问题。 我有一个简单的 servlet "Myservlet.java" 打印一个字符串 (动态 Web 项目名称为 "JspCallingServlet",其上下文根为“/”) DynamicWebProject Explorer

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

/**
 * Servlet implementation class MyServlet
 */
@SuppressWarnings("serial")
@WebServlet(
        name="MyServlet",
        urlPatterns="/MyServlet"
        )
public class MyServlet extends HttpServlet {

... omitted code

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out = response.getWriter();
        out.println("... I'M MyServlet ...");
    }

}

它可以工作,因为如果我 "Run As/Run on Server" 它显示 servlet output

所以我认为我可以通过包含操作轻松地在 jsp 中调用它, 将 servlet 设置为页面 url

<html>
<head>
<title>Using servlet into a jsp</title>
</head>
<body>
    Using: MyServlet.java
    <br />
    <jsp:include page="/MyServlet" />
</body>
</html>

但是为什么

<jsp:include page="/MyServlet" />

不编译,消息显示

Fragment "/MyServlet" was not found at expected path /JspCallingServlet/WebContent/MyServlet

当 WebContent 文件夹应该打开映射到 servlet 的 "page" URL 时,为什么还要打扰 WebContent 文件夹?

<jsp:include page="/MyServlet">应该改为<jsp:include page="/xxx.jsp">

:我自己找到答案了

我在某种程度上被我找到的答案误导了 How to call servlet through a JSP page 在发布我提出的问题之前...

似乎 - 至少我就是这样 - 正确的 "action" 用于包含 servlet 的是 "forward" 操作: 不是 "include" 一个。

即右边的.jsp是下面的

<html>
<head>
<title>Using servlet into a jsp</title>
</head>
<body>
    Using "jsp:include" fails, while using "jsp:forward" works
    <br />
    <jsp:forward page="/MyServlet" />               <%-- WORKING --%>
    <%-- <jsp:include page="/MyServlet" /> --%>     <%-- NOT WORKING --%>
</body>
</html>