如何在 Servlet 转发时将 JSP 片段包含到 JSP 页面中?

5

首先,请告诉我我的问题标题是否正确。

接下来是问题:

search.jsp - 一个带有提交数据表单的JSP页面

Search.java - 一个控制器Servlet,分别定义了get()post(),以便它可以作为路径/search.jsp的调度程序

searchResults.jspf - 一个带有一些JSTL代码的片段,用于显示搜索结果

我想要的是,对于每个POST请求,控制器Servlet都必须进行计算,将结果设置为请求属性,然后 - 将请求转发到视图search.jsp,该视图应在其自己的代码之后包含该片段

这样,我就可以定义一个视图:

search.jsp
+
searchResults.jspf

在单个页面上。

问题是,我只能使用 dispatcher 进行前向或包含操作,因为我不知道如何在转发到 JSP 时包含一个片段。

如果需要,让我知道是否需要发布一些代码或进行任何更正。

2个回答

4
在你的search.jsp文件中,使用jsp:include嵌入你的searchResult.jsp文件。
<jsp:include page="searchResult.jsp"></jsp:include>

例子: 1. Servlet:

@WebServlet(name = "Servlet", urlPatterns = "/myForwardTest")
public class Servlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("search.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          doPost(request, response);
    }
 }
  1. search.jsp:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
       <title>In search resust</title>
    </head>
    <body>
     Search.jsp embed searchResult.jsp
    <jsp:include page="searchResult.jsp" />
    </body>
    </html>
    
  2. searchResult.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <body>
      in searchResult
    </body>
    </html>
    

我该如何确保它仅在来自Servlet的POST方法时被包含? - Asif
你试过了吗?当你从控制器转发请求时,此时我认为post和get之间没有区别...你如何转发你的请求? - fabien t
我试过了,完全没有问题。如果你想要一个例子,我可以给你。 - fabien t
谢谢,我找到了一个解决方法,我使用了JSTL的c:if,它查找一个名为showResultrequestAttribute,如果为true,它将include searchResults.jspf,否则什么也不会发生。当通过GET转发请求时,在servlet的doGet()方法中将其设置为false,而在doPost()中将其设置为`true!我认为这是正确的方式。干杯 :) - Asif

1
您可以在JSP中包含您的JSPF文件,如下所示:

<%@include file="searchResult.jspf" %>

您可以设置一个语句,仅在特定测试评估为时执行某个特定部分。

示例:

if(.....==true){
<%@include file="searchResult.jspf" %>
}else{
<%@include file="someOther.jspf" %>
}

我想使用JSTL或EL标签而不是JSP代码,如果您能帮助我,请。 - Asif
你可以通过以下链接更深入地学习JSTL和EL。它们提供了使用JSTL中每个标签的示例。 JSTL--> http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm EL--> http://www.tutorialspoint.com/jsp/jsp_expression_language.htm - Madushan Perera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接