Sie nicht. Was Sie tun, ist, rufen Sie den Controller und haben, wenn an die JSP weitergeleitet. Sie rufen die JSPs niemals direkt selbst auf.
Also, was Sie am Ende mit ist:
request --- invokes ---> Controller --- forwards to ---> JSP
Der Controller kann holen, was notwendig ist und die Anforderung angemessen füllen, bevor die JSP aufgerufen, alles zu machen.
Addenda -
Hier ist ein einfaches Servlet, abzubildenden/myservlet:
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MemberDAO dao = DAOFactory.getMemberDAO();
List<Member> members = dao.getMembers();
request.setAttribute("members", members);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/WEB-INF/jsp/members.jsp");
rd.forward(request, response);
}
}
Und hier ist ein assoziiertes JSP bei /WEB-INF/jsp/members.jsp gestellt:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Members List</title>
</head>
<body>
<h1>Members List</h1>
<table>
<tr>
<td>Member ID</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
<c:forEach items="${members}" var="member">
<tr>
<td>${member.id}</td>
<td>${member.firstName}</td>
<td>${member.lastName}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
in Ihrem Browser Sie treffen: http://yourhost/yourapp/MyServlet
Das Servlet, als contr handeln oller, nimmt die Anfrage, handelt darauf (in diesem Fall erhält man eine Liste aller Mitglieder aus der Datenbank mit einem einfachen DAO-Muster), und legt dann die Ergebnisse in die Anfrage mit dem Tag "members" (die request.setAttribute("members", members)
tut Dies).
Eine der Anfrage ist richtig mit interessanten Informationen gefüllt, die Servlet an die JSP.
Hinweis: In diesem Fall befindet sich die JSP unter dem Verzeichnis WEB-INF. JSPs innerhalb von WEB-INF sind vom Browser aus NICHT zugänglich. So eine Anfrage an http://yourhost/yourapp/WEB-INF/jsp/members.jsp wird einfach fehlschlagen.
Aber sie sind intern zugänglich.
die Servlet vorwärts So members.jsp und members.jsp macht, von der Anforderung der members
Wert Ortung ($ {} Mitglieder in der JSTL c: forEach Tag) und die c: forEach iteriert über diese Liste Befüllen der Variablen member
und von dort Ausfüllen der Zeilen in der Tabelle.
Dies ist ein klassisches "Controller First" -Muster, das die JSP aus dem Weg hält. Es hilft auch sicherzustellen, dass die JSPs nur in der View-Ebene von MVC vorhanden sind. In diesem einfachen Beispiel ist Member und List das Modell, das Servlet im Controller und die JSP die View.
Es gibt etwas namens onPageLoad() (Syntax kann falsch sein) in Javascript, dort müssen Sie möglicherweise Ihr Servlet mit Ajax aufrufen. – kosa