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>
嗯,这里又敲了一个假设没问题。 我有一个简单的 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>