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

时间:2015-11-04 15:48:16

标签: java jsp servlets jsp-fragments

首先,如果我的问题标题不正确,请建议我。

继续提问: 假设我有以下组件:

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

Search.java - 分别定义get()post()的控制器Servlet,以便它可以充当路径 /search.jsp的调度程序 < / p>

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

我想要的是每个 POST 请求控制器servlet必须进行计算,将结果设置为请求属性,而不是 - 将请求转发给视图search.jsp应该包含片段后面的片段

因此,我可以通过以下方式获得视图定义:

search.jsp
+
searchResults.jspf

在一个页面上。

问题是,我可以向调度员转发或包含,因为我不知道如何在将JSP转发到其中时包含片段。

如果需要,我需要发布一些代码,或者需要更正。

2 个答案:

答案 0 :(得分:2)

在你的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>
    

答案 1 :(得分:1)

您可以将jspf包含在jsp中,如下所示:

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

只有当特定测试评估为 true 时,您才可以设置语句来执行某个部分。

<强>实施例

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