2.1 Dyrektywy JSP
Ponieważ dowiedzieliśmy się, że plik JSP jest konwertowany na zwykły serwlet, można w nim pisać normalny kod Java. A w tym kodzie Java możesz używać różnych klas (Math z przykładu). To jest jeszcze lepsze! Widzimy jednak, że cały kod został przeniesiony do doGet()
metody serwletu. A to od razu rodzi kilka pytań:
- Jak to zrobić, aby kod został przeniesiony do metody
doPost()
? - Jak dodać własny kod do metody
init()
? - Jak w końcu zarejestrować import klas?
Świetne pytania i oczywiście mają na nie odpowiedź - dyrektywy JSP. Cały kod inny niż HTML na stronie JSP musi być ujęty w specjalne nawiasy kwadratowe <%
i %>
. Wszystkie dyrektywy JSP są podane w szablonie:
<%@ directive %>
Oto lista najpopularniejszych atrybutów dyrektywy strony:
Przykład | Opis | ||
---|---|---|---|
1 | import | <%@ page import="java.util.Date" %> |
Importuje klasę |
2 | Typ zawartości | <%@ page contentType=text/html %> |
Ustawia contentType |
3 | rozciąga się | <%@ page extends="Object" %> |
Możesz ustawić klasę bazową |
4 | informacje | <%@ page info="Author: Peter Ivanovich; version:1.0" %> |
Ustawia dane dla getServletInfo() |
5 | bufor | <%@ page buffer="16kb" %> |
Ustawia rozmiar bufora odpowiedzi |
6 | język | <%@ page language="java" %> |
Określa język, domyślnie jest to Java |
7 | jestELIGignorowany | <%@ page isELIgnored="true" %> |
Umożliwia wyłączenie skryptów EL |
8 | jest bezpieczny dla wątków | <%@ page isThreadSafe="false" %> |
Wskazuje na bezpieczeństwo wątków |
9 | automatyczne płukanie | <%@ page autoFlush="false" %> |
Zarządza zapisami w buforze |
10 | sesja | <%@ page session="false" %> |
Możesz wyłączyć sesję dla strony |
jedenaście | kodowanie strony | <%@ page pageEncoding="UTF-8"%> |
Możesz ustawić kodowanie strony |
12 | Strona błędu | <%@ page errorPage="errorpage.jsp" %> |
Możesz ustawić stronę błędu |
2.2 Import
Dla zabawy dodajmy import do naszego pliku JSP i zdefiniujmy klasę bazową.
Przykład pliku JSP:
<%@ page import="java.util.Date" %>
<%@ page import="java.lang.Math" %>
<%@ page extends="com.codegym.MyHttpServlet" %>
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
A oto co z tego wyniknie:
import java.util.Date;
import java.lang.Math;
public class HelloServlet extends com.codegym.MyHttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body> ");
double num = Math.random();
if (num > 0.95) {
out.print("<h2> You're lucky, user! </h2> <p> (" + num + ")</p> ");
}
out.print("</body> ");
out.print("</html> ");
}
}
Pracuje. Świetnie!