JavaRush/Курсы/JSP & Servlets/Структура JSP-файла

Структура JSP-файла

Открыта

2.1 JSP-директивы

Раз уж мы выяснили, что JSP-файл преобразовывается в обычный сервлет, то в нем можно писать обычный Java-код. И в этом Java-коде можно использовать различные классы (Math из примера). Это еще лучше! Но мы видим, что весь код был перенесен в метод doGet() сервлета. А отсюда сразу возникает несколько вопросов:

  • Как сделать так, чтобы код был перенесен в метод doPost()?
  • Как добавить свой код в метод init()?
  • Как в конце концов прописать импорты классов?

Отличные вопросы, и, конечно же, на них есть ответ — JSP-директивы. Весь не-HTML-код внутри JSP должен быть обрамлен в специальные скобки <% и %>. Все JSP-директивы задаются шаблоном:

<%@ directive %>

Вот список самых популярных атрибутов директивы страницы:

Пример Описание
1 import <%@ page import="java.util.Date" %> Импортирует класс
2 contentType <%@ page contentType=text/html %> Задает contentType
3 extends <%@ page extends="Object" %> Можно задать базовый класс
4 info <%@ page info="Автор: Пётр Иванович; версия:1.0" %> Задает данные для getServletInfo()
5 buffer <%@ page buffer="16kb" %> Задает размер буфера ответа
6 language <%@ page language="java" %> Задает язык, по умолчанию Java
7 isELIgnored <%@ page isELIgnored="true" %> Позволяет отключить EL скрипты
8 isThreadSafe <%@ page isThreadSafe="false" %> Указывает на threadsafe
9 autoFlush <%@ page autoFlush="false" %> Управляет записью в буфер
10 session <%@ page session="false" %> Можно отключить сессию для страницы
11 pageEncoding <%@ page pageEncoding="UTF-8"%> Можно задать кодировку страницу
12 errorPage <%@ page errorPage="errorpage.jsp" %> Можно задать страницу для ошибок

2.2 Импорты

Давай ради интереса добавим в наш JSP-файл несколько импортов и зададим базовый класс.

Пример JSP-файла:

<%@ page import="java.util.Date" %> <%@ page import="java.lang.Math" %> <%@ page extends="com.javarush.MyHttpServlet" %>

   <html>
   <body>
<%
double num = Math.random(); if (num > 0.95) {
%>
        <h2>Ты счастливчик, user!</h2><p>(<%= num %>)</p>
<%
}
%>
 </body>
  </html>

И вот что из него получится:

import java.util.Date;
import java.lang.Math;

public class HelloServlet extends com.javarush.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> Ты счастливчик, user! </h2> <p> (" + num + ")</p> ");
        }
    out.print("</body> ");
    out.print("</html> ");
    }
}

Работает. Отлично!

Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Daniil Klinkov
Уровень 38
9 октября 2023, 16:36
Замените
Вот список самых популярных атрибутов директивы страницы:
на
Вот список самых популярных атрибутов директивы page:
Равиль
Уровень 69
25 января, 20:12
25.01.25 без изменений
Anonymous #3322801
Уровень 1
Expert
25 августа 2023, 12:25
Исходя из всего вышенаписанного два первых вопроса остаются открытыми 1. Как сделать так, чтобы код был перенесен в метод doPost()? 2. Как добавить свой код в метод init()?
Anonymous #2436575 Android Developer в AllPets
6 сентября 2022, 15:55
В JSP есть всего три директивы: include, page и taglib Список предоставленный тут - это атрибуты директивы page. Я честно не знаю как так можно писать статью
Сергей Работает в ITQ-Group Expert
3 ноября 2022, 19:00
Саша И.
Уровень 101
Expert
16 декабря 2022, 04:11
В статье написано Вот список самых популярных атрибутов директивы страницы. То есть речь исключительно про page. Конечно, сделать такой вывод можно только после прочтения вашего комментария, так что нужно исправлять :)