2.1 JSP директиви
Тъй като разбрахме, че JSP файлът се преобразува в обикновен сървлет, тогава можете да пишете нормален Java code в него. И в този Java code можете да използвате различни класове (Math от примера). Това е още по-добре! Но можем да видим, че целият code е преместен в doGet()метод на сервлет. И това веднага повдига няколко въпроса:
- Как да направя така, че codeът да се премести в метода
doPost()? - Как да добавите свой собствен code към метода
init()? - Как в крайна сметка да регистрирам импортиране на клас?
Страхотни въпроси и, разбира се, имат отговор - JSP директиви. Всички не-HTML codeове в JSP трябва да бъдат затворени в специални скоби <%и %>. Всички JSP директиви са дадени от шаблон:
<%@ directive %>
Ето списък на най-популярните атрибути на директиви за страници:
| Пример | Описание | ||
|---|---|---|---|
| 1 | импортиране | <%@ page import="java.util.Date" %> |
Импортира клас |
| 2 | тип съдържание | <%@ page contentType=text/html %> |
Задава contentType |
| 3 | се простира | <%@ page extends="Object" %> |
Можете да зададете базовия клас |
| 4 | инфо | <%@ page info="Author: Peter Ivanovich; version:1.0" %> |
Задава данни за getServletInfo() |
| 5 | буфер | <%@ page buffer="16kb" %> |
Задава размера на буфера за отговор |
| 6 | език | <%@ page language="java" %> |
Указва езика, по подразбиране е Java |
| 7 | isELIgnored | <%@ page isELIgnored="true" %> |
Позволява ви да деактивирате EL скриптове |
| 8 | isThreadSafe | <%@ page isThreadSafe="false" %> |
Сочи към безопасен за нишки |
| 9 | autoFlush | <%@ page autoFlush="false" %> |
Управлява записите в буфера |
| 10 | сесия | <%@ page session="false" %> |
Можете да деактивирате сесията за pageта |
| единадесет | pageEncoding | <%@ page pageEncoding="UTF-8"%> |
Можете да зададете codeирането на pageта |
| 12 | errorPage | <%@ page errorPage="errorpage.jsp" %> |
Можете да зададете page за грешка |
2.2 Внос
Нека добавим няколко импортирания към нашия JSP файл за забавление и дефинираме базов клас.
Пример за 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>
И ето Howво ще излезе от това:
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> ");
}
}
Върши работа. Страхотен!
GO TO FULL VERSION