嗯,这里又一次没有问题。 我有一个简单的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 ...");
}
}
它起作用,因为如果我"在服务器上运行/运行"表明 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
为什么要在打开&#34;页面时打扰WebContent文件夹&#34; URL映射到servlet?。
答案 0 :(得分:0)
<jsp:include page="/MyServlet">
应更改为<jsp:include page="/xxx.jsp">
答案 1 :(得分:0)
:我自己找到了答案。
我在某种程度上被我发现的答案误导了 How to call servlet through a JSP page 在发布我提出的问题之前......
似乎 - 至少我发生了什么 - 为了包含servlet而使用的正确“动作”是“前进”动作: 不是“包括”一个。
即正确的.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>