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