2017-04-18 73 views
1

好吧,這裏再次觸動了一個沒有問題的東西。 我有一個簡單的servlet「Myservlet.java」,打印字符串 (動態Web項目的名稱是「JspCallingServlet」和它的上下文根爲「/」) DynamicWebProject ExplorerEclipse:jsp:包含servlet的動作

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中, 設置爲頁面的服務器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文件夾時,它應該打開「頁面」 URL映射到servlet ?。

回答

0

:S我自己找到了答案。

我不知何故,我發現在 How to call servlet through a JSP page 張貼非常的問題,我之前做的答案誤導...

看來 - 至少這就是發生在我身上 - 即正確的「動作」來使用爲了包含一個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> 
0

<jsp:include page="/MyServlet">應改爲<jsp:include page="/xxx.jsp">