Рубрики
Без рубрики

Пример руководства по JSP для начинающих

Пример JSP. Учебник по JSP. Примеры программ JSP. Учебник по JSP для начинающих с примерами. Пример кода страницы Java JSP. Программирование JSP.

Автор оригинала: Pankaj Kumar.

Добро пожаловать в учебник по примерам JSP для начинающих. В последних нескольких постах a много писал о Java-сервлете и получил очень хороший отклик от наших читателей. Итак, я начал еще одну серию обучающих программ по JSP, и это первый пост из этой серии.

Пример учебника по JSP

В этом учебном пособии на примере JSP мы рассмотрим основы JSP, преимущества JSP перед сервлетами, жизненный цикл JSP, интерфейсы и классы API JSP, а также где мы можем разместить файлы JSP в веб-приложении.

Мы также рассмотрим комментарии JSP, Скрипты, Директивы, Выражения, Объявления и атрибуты JSP вкратце. Некоторые из этих тем очень важны, и мы рассмотрим их более подробно в будущих сообщениях.

Учебное пособие по JSP

  1. Что такое JSP и зачем нам нужен JSP?
  2. Преимущества JSP перед сервлетами?
  3. Жизненный цикл страницы JSP
  4. Методы жизненного цикла JSP
  5. Простой пример JSP с Eclipse и Tomcat
  6. Расположение файлов JSP в файле войны веб-приложения
  7. Интерфейсы и классы JSP API
    • Интерфейс JspPage
    • Интерфейс HttpJspPage
    • Абстрактный класс JspWriter
    • Абстрактный класс Jscontext
    • Абстрактный класс PageContext
    • Абстрактный класс JspFactory
    • Абстрактный класс JspEngineInfo
    • Данные об ошибках заключительный Класс
    • Класс JspException
    • Класс JspTagException
    • Класс исключения SkipPageException
  8. Комментарии JSP
  9. Сценарии JSP
  10. Выражение JSP
  11. Директивы JSP
  12. Декларация JSP
  13. JSP преобразовал исходный код сервлета и расположение файла класса в Tomcat
  14. Параметры инициализации JSP
  15. Переопределение метода jspInit()
  16. Атрибуты в JSP
  1. Что такое JSP и зачем нам нужен JSP?

    JSP (страницы JavaServer) – это серверная технология для создания динамического веб-приложения java . JSP можно рассматривать как расширение технологии сервлетов, поскольку она предоставляет функции для простого создания пользовательских представлений.

    Страница JSP состоит из HTML-кода и предоставляет возможность включать java-код для динамического содержимого. Поскольку веб-приложения содержат много пользовательских экранов, JSP часто используются в веб-приложениях. Чтобы преодолеть разрыв между кодом java и HTML в JSP, он предоставляет дополнительные функции, такие как теги JSP, язык выражений, пользовательские теги. Это облегчает понимание и помогает веб-разработчику быстро разрабатывать страницы JSP.

  2. Преимущества JSP перед сервлетами?

    • Мы также можем генерировать HTML-ответ из сервлетов, но этот процесс громоздок и подвержен ошибкам, когда дело доходит до написания сложного HTML-ответа, запись в сервлете будет кошмаром. JSP помогает в этой ситуации и предоставляет нам гибкость для написания обычной HTML-страницы и включения вашего java-кода только там, где это необходимо.
    • JSP предоставляет дополнительные функции, такие как библиотеки тегов, язык выражений, пользовательские теги, которые помогают ускорить разработку пользовательских представлений.
    • Страницы JSP легко развертываются, нам просто нужно заменить измененную страницу на сервере, и контейнер позаботится о развертывании. Для сервлетов нам нужно перекомпилировать и развернуть весь проект заново.

    На самом деле сервлет и JSP дополняют друг друга. Мы должны использовать сервлет в качестве контроллера на стороне сервера и для связи с классами моделей, в то время как JSP следует использовать для уровня представления.

  3. Жизненный цикл страницы JSP

    Жизненный цикл JSP также управляется контейнером. Обычно каждый веб-контейнер, содержащий контейнер сервлетов, также содержит контейнер JSP для управления страницами JSP.

    Этапы жизненного цикла страниц JSP являются:

    • Перевод – Страницы JSP не похожи на обычные классы java, на самом деле контейнер JSP анализирует страницы JSP и переводит их для создания соответствующего исходного кода сервлета. Если имя файла JSP-home.jsp, обычно оно называется как home_jsp.java.
    • Компиляция – Если перевод выполнен успешно, контейнер компилирует сгенерированный исходный файл сервлета для создания файла класса.
    • Загрузка класса – Как только JSP компилируется как класс сервлета, его жизненный цикл аналогичен сервлету, и он загружается в память.
    • Создание экземпляра – После загрузки класса JSP в память его объект создается контейнером.
    • Инициализация – Затем класс JSP инициализируется и преобразуется из обычного класса в сервлет. После инициализации объекты ServletConfig и ServletContext становятся доступными для класса JSP.
    • Обработка запроса – Для каждого запроса клиента создается новый поток с ServletRequest и ServletResponse для обработки и генерации HTML-ответа.
    • Уничтожить – Последняя фаза жизненного цикла JSP, на которой он выгружается в память.
  4. Методы жизненного цикла JSP

    Методы жизненного цикла JSP являются:

    1. jspInit() объявлен в интерфейсе JspPage. Этот метод вызывается только один раз в жизненном цикле JSP для инициализации параметров конфигурации.
    2. _служба _jsp(запрос HttpServletRequest, ответ HttpServletResponse) объявлена в интерфейсе HttpJspPage и в ответе для обработки клиентских запросов.
    3. jspDestroy() объявлен в интерфейсе JspPage для выгрузки JSP из памяти.
  5. Простой пример JSP с Eclipse и Tomcat

    Мы можем использовать Eclipse IDE для создания динамического веб-проекта с помощью JSP и использовать Tomcat для его запуска. Пожалуйста, прочитайте Веб-приложения Java учебник, чтобы узнать, как мы можем легко создавать JSP в Eclipse и запускать его в tomcat.

    Простой пример страницы JSP – это:

    Простой пример страницы JSP - это:

    Если у вас есть простой JSP, который использует только классы JRE, мы не обязаны помещать его в файл WAR. Просто создайте каталог в папке tomcat webapps и поместите свой файл JSP во вновь созданный каталог. Например, если ваш JSP находится в apache- tomcat/webapps/test/home.jsp , вы можете получить доступ к нему в браузере по URL https://localhost:8080/test/home.jsp . Если ваш хост и порт отличаются, вам необходимо внести соответствующие изменения в URL-адрес.

  6. Расположение файлов JSP в файле войны веб-приложения

    Мы можем разместить файлы JSP в любом месте файла WAR, однако, если мы поместим его в каталог WEB-INF, мы не сможем получить доступ к нему напрямую от клиента.

    Мы можем настроить JSP так же, как сервлеты в web.xml, например, если у меня есть страница с примером JSP, как показано ниже, в каталоге WEB-INF:

    Мы можем настроить JSP так же, как сервлеты в web.xml, например, если у меня есть страница с примером JSP, как показано ниже, в каталоге WEB-INF:

    И я настраиваю его в web.xml конфигурация как:

    Тогда я смогу получить к нему доступ с помощью обоих URL-адресов https://localhost:8080/FirstJSP/Test.do и https://localhost:8080/FirstJSP/Test1.do

    Обратите внимание, что в этом случае контейнер создаст два экземпляра, и оба будут иметь свои собственные объекты servletconfig, вы можете подтвердить это, посетив эти URL-адреса в браузере.

    Для Test.do URI, вы получите ответ, как показано ниже.

    Для Test1.do URI, вы получите ответ, как показано ниже.

    Обратите внимание, что значение параметра инициализации во втором случае равно нулю, потому что оно не определено для второго сервлета, также обратите внимание, что хэш-код отличается. Если вы будете делать дальнейшие запросы, значение хэш-кода не изменится, поскольку запросы обрабатываются путем создания нового потока контейнером.

    Вы заметили использование переменной config в приведенном выше примере JSP, но переменная не объявлена, это потому, что это один из 9 неявных объектов, доступных на странице JSP, подробнее о них читайте в Неявные объекты JSP .

  7. Интерфейсы и классы JSP API

    Все основные интерфейсы и классы JSP определены в javax.servlet.jsp пакете. Интерфейсы API языка выражений являются классами, входящими в javax.servlet.jsp.el пакет. Интерфейсы и классы библиотек тегов JSP определены в javax.servlet.jsp.tagext пакет.

    Здесь мы рассмотрим интерфейсы и классы Core JSP API.

    • Интерфейс JspPage

      Интерфейс JspPage расширяет интерфейс сервлета и объявляет методы жизненного цикла jspInit() и jspDestroy() страниц JSP.

    • Интерфейс HttpJspPage

      Интерфейс HttpJspPage описывает взаимодействие, которому должен удовлетворять класс реализации страницы JSP при использовании протокола HTTP. Этот интерфейс объявляет метод службы страницы JSP для протокола HTTP как public void_. Служба(запрос HttpServletRequest, ответ HttpServletResponse) вызывает исключение ServletException, исключение IOException .

    • Абстрактный класс JspWriter

      Аналогично PrintWriter в сервлетах с дополнительной поддержкой буферизации. Это одна из неявных переменных на странице JSP с именем “out”. Этот класс расширяет java.io.Writer и контейнер предоставляют свою собственную реализацию для этого абстрактного класса и используют ее при переводе страницы JSP в сервлет. Мы можем получить его объект с помощью метода PageContext.getOut (). Конкретный класс Apache Tomcat для JspWriter-это org.apache.jasper.runtime.JspWriterImpl .

    • Абстрактный класс Jscontext

      JspContext служит базовым классом для класса PageContext и абстрагирует всю информацию, не относящуюся к сервлетам. JspContext предоставляет механизм для получения JspWriter для вывода, механизм для работы с атрибутами и API для управления различными областями имен.

    • Абстрактный класс PageContext

      PageContext расширяет JspContext для предоставления полезной контекстной информации, когда JSP используется для веб-приложений. Экземпляр PageContext предоставляет доступ ко всем пространствам имен, связанным со страницей JSP, предоставляет доступ к нескольким атрибутам страницы, а также к слою над деталями реализации. Неявные объекты добавляются в текст страницы автоматически.

    • Абстрактный класс JspFactory

      JspFactory-это абстрактный класс, который определяет ряд заводских методов, доступных странице JSP во время выполнения для создания экземпляров различных интерфейсов и классов, используемых для поддержки реализации JSP.

    • Абстрактный класс JspEngineInfo

      JspEngineInfo-это абстрактный класс, который предоставляет информацию о текущем механизме JSP.

    • Данные об ошибках заключительный Класс

      Содержит информацию об ошибке для страниц с ошибками.

    • Класс JspException

      Общее исключение, известное контейнеру JSP, аналогичное исключению ServletException.Если страницы JSP создают исключение JspException, то для представления информации об ошибке пользователю используется механизм страницы ошибок.

    • Класс JspTagException

      Исключение, которое будет использоваться обработчиком тегов для указания на какую-либо неисправимую ошибку.

    • Класс исключения SkipPageException

      Исключение, указывающее, что вызывающая страница должна прекратить оценку. Создается простым обработчиком тегов, указывающим, что остальная часть страницы не должна оцениваться. Это исключение не должно создаваться вручную на странице JSP.

  8. Комментарии JSP

    Поскольку JSP построен поверх HTML, мы можем писать комментарии в файле JSP, например html-комментарии, как

    <-- Это HTML-комментарий -->

    Эти комментарии отправляются клиенту, и мы можем просмотреть их с помощью опции просмотра исходного кода браузеров.

    Мы можем помещать комментарии в файлы JSP следующим образом:

    <%-- Это комментарий JSP--%>

    Этот комментарий подходит разработчикам для предоставления комментариев на уровне кода, поскольку они не отправляются в ответе клиента.

  9. Сценарии JSP

    Теги скриптов-это самый простой способ поместить java-код на страницу JSP. Тег скриптлета начинается с <% и заканчивается %> .

    Любой код, написанный внутри тегов скриптлета, переходит в метод _jspService () .

    Например:

  10. Выражение JSP

    Поскольку в большинстве случаев мы печатаем динамические данные на странице JSP с помощью метода out.print () , для этого существует ярлык с помощью выражений JSP. Выражение JSP начинается с <%= и заканчивается %> .

    <% out.print("Pankaj"); %> может быть записано с использованием выражения JSP как <%= "Pankaj" %>

    Обратите внимание, что все, что находится между <%=%> , отправляется в качестве параметра в out.print() метод. Также обратите внимание, что скриптлеты могут содержать несколько операторов java и всегда заканчиваются точкой с запятой (;), но выражение не заканчивается точкой с запятой.

  11. Директивы JSP

    Директивы JSP используются для предоставления специальных инструкций контейнеру во время перевода страницы JSP в исходный код сервлета. Директивы JSP начинаются с <%@ и заканчиваются %>

    Например, в приведенном выше примере JSP я использую директиву page , чтобы указать переводчику JSP контейнера импортировать класс даты.

  12. Декларация JSP

    Объявления JSP используются для объявления методов – членов и переменных класса сервлетов. Объявления JSP начинаются с <%! и заканчивается на|/%> . Например, мы можем создать переменную int в JSP на уровне класса как

    <%! общедоступный статический int; %> JSP преобразовал исходный код сервлета и расположение файла класса в Tomcat

  13. Как только файлы JSP переведены в исходный код сервлета, исходный код (.java) и скомпилированные классы помещаются в каталог

    Tomcat/work/Catalina/localhost/FirstJSP/org/apache/jsp . Если файлы JSP находятся в других каталогах приложения, структура каталогов сохраняется. Для Jsp внутри каталога WEB-INF его исходные файлы и файлы классов находятся в каталоге

    Tomcat/work/Catalina/localhost/First JSP/org/apache/jsp/WEB_002dINF . Вот исходный код, сгенерированный для приведенной выше страницы test.jsp.

    Вот исходный код, сгенерированный для приведенной выше страницы test.jsp.

    Обратите внимание на следующие моменты в приведенном выше коде сервлета;

    Пакет класса начинается с org.apache.jsp, и если JSP находятся в других папках, он также включает иерархию каталогов. Обычно нас это не волнует.

    • Класс сервлета generates является окончательным и не может быть расширен.
    • Он расширяет
    • org.apache.jasper.runtime.HttpJspBase , похожий на HttpServlet, за исключением того, что он является внутренним для реализации Tomcat JSP Translator. HttpJspBase расширяет HttpServlet и реализует интерфейс HttpJspPage. Обратите внимание на локальные переменные в начале реализации метода _jspService (), они автоматически добавляются переводчиком JSP и доступны для использования в методах обслуживания, т. Е. в сценариях.
    • Как программист на Java, иногда полезно заглянуть в сгенерированный исходный код для целей отладки.

    Параметры инициализации JSP

  14. Мы можем определить параметры инициализации для страницы JSP, как показано в приведенном выше примере, и мы можем получить их в JSP, используя

    config неявный объект, мы рассмотрим неявные объекты в JSP более подробно в будущих сообщениях. Переопределение метода jspInit()

  15. Мы можем переопределить метод jspInit для создания ресурсов, которые будут использоваться методом JSP service (), используя теги объявления JSP, мы также можем переопределить jspInit() и jspDestroy() или любые другие методы. Однако мы никогда не должны переопределять метод _jspService (), потому что все, что мы пишем в JSP, переходит в метод обслуживания.

    Атрибуты в JSP

  16. Помимо стандартных атрибутов сервлета с областью запроса, сеанса и контекста, в JSP у нас есть еще одна область для атрибутов, т. Е. Область страницы, которую мы можем получить из объекта PageContext. Мы рассмотрим, насколько это важно, в учебнике по пользовательским тегам. Для обычного программирования JSP нам не нужно беспокоиться о области видимости страницы.

Это все для примера учебника JSP для начинающих. Я надеюсь, что это поможет вам понять основные концепции JSP и поможет вам начать работу. Мы рассмотрим другие функции JSP в будущих сообщениях.