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!