Java: в том числе заголовка шаблона (вызывает сервлет) на JSP-страницу (вызывает сервлет)
Я пытаюсь понять, как JSP и сервлеты работают вместе. Таким образом, при запросе веб-страницы запускается сервлет, который отправляет некоторые данные в качестве ответа, а JSP, который запускает сервлет, обрабатывает (например, показывает) данные.
Все работает, но у меня есть небольшая проблема с частичной JSP-страницей, которая включена в запрошенную страницу как «компонент шаблона» (она действует как компонент шаблона (например, баннеры и т. Д.)).
В моем случае у меня есть заголовок (jsp-файл, который должен запускать сервлет, запрашивать некоторые данные и пересылать их в родительский jsp-файл), который должен быть включен внутри (возможно/почти) все страницы. Таким образом, когда запрашивается страница, страница должна включать некоторые другие ответы на свой ответ.
на самом деле я говорю об этом. Ниже приведены мои JSP-файлы.
1) WEB-INF/JSP/head.jsp
(действует как часть шаблона): это работает, поскольку он не вызывает сервлет.
<%@page contentType="text/html" pageEncoding="UTF-8" session="false"%>
<%@taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core'%>
<title>Company - ${param.title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href=<c:url value='/images/favicon.ico'/> type="image/x-icon"/>
<link rel="stylesheet" href=<c:url value='/styles/default.css'/>>
2) WEB-INF/JSP/header.jsp
(действует как часть шаблона), это один не работает.
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" session="false"%>
<header>
We are ${companyStatus}
</header>
3) WEB-INF/JSP/index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" session="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<c:import url="head.jsp">
<c:param name="title" value="Welcome" />
</c:import>
</head>
<body>
<%@include file="header.jsp"%>
<p>${test}</p>
</body>
</html>
И в этот момент у меня есть два сервлета.
IndexServlet (@WebServlet('/index.html')
)
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("test", "Some specific data for Welcome-page only!");
request.getRequestDispatcher(/WEB-INF/JSP/index.jsp).forward(request, response);
}
HeaderServlet (@WebServlet("WEB-INF/JSP/header.jsp")
)
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("companyStatus", "closed");
request.getRequestDispatcher(????).forward(request, response);
}
Это не работает, конечно.
P.S. This (нажмите, чтобы увидеть ссылку) это не мой вопрос. Мой вопрос заключается в том, как включить ответ страницы JSP в ответ на другую страницу JSP.