2017-04-18 47 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">