Общийдескрипторразвёртывания web.xml
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

· Определяет параметры развёртывания web-приложения в контейнере.

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

· Указанные в дескрипторе параметры перекрывают параметры, указанные с помощью аннотаций классов.

Пример 11.Дескриптор развертывания web . xml

<? xmlversion ="1.0" encoding =" UTF -8"?>

<web-appversion="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<listener>

<listener-class>org.tempuri.MyListner</listener-class>

</listener>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>org.tempuri.MyServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name>

<url-pattern>/MyServlet.html</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/MyServlet.html</welcome-file>

</welcome-file-list>

</web-app>

Фильтрация

· Получаемые запросы и формируемые отклики могут быть подвергнуты фильтрации.

· API для классов фильтрации определен интерфейсами Filter, FilterConfig, FilterChain пакета javax.servlet.

· Включение фильтров осуществляется с помощью аннотации @WebFilter.

· Фильтры используются в основном для перехвата и изменения запросов и ответов от сервера. Рассмотрим случай, в котором проверяется сессия для каждого запроса пользователя, и если она верна, то только тогда пользователь может получить доступ к странице. Этого можно добиться путем проверки сессий на всех сервлет страницах (страницы JSP), которые запрашивают пользователи, или можно сделать это с помощью фильтра.

Пример 12. Фильтр

public class LogFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

String ipAddress = request.getRemoteAddr();

System.out.println("IP " + ipAddress + ", Time " + new Date());

chain.doFilter(req, res);

}

public void init(FilterConfig config) throws ServletException {

//Get init parameter

String testParam = config.getInitParameter("test-param");

//Print the init parameter

System.out.println("Test Param: " + testParam);

}

public void destroy() {

//add code to release any resource

}

}

• Метод init () используется для инициализации любого кода, который используется фильтром. Также отметим, чтоinit () получит объект FilterConfig, который содержит различную информация уровня фильтров, а также параметры инициализации, который передаются из web.xml (дескриптора развертывания).

d oFilter() фактически выведет информацию. Можно изменить этот метод и добавить код, который может изменить запрос / состояние сессии / ответ, добавить атрибут в запрос и т.д.

d estroy() вызывается контейнером, когда он хочет убрать мусор за фильтром. Это обычно делается, когда фильтр не используется в течение длительного времени и сервер хочет выделить память для других приложений.

Пример 13. Маппинг фильтра в web . xml

<filter>

<filter-name>LogFilter</filter-name>

<filter-class>sample.LogFilter</filter-class>

<init-param>

<param-name>test-param</param-name>

<param-value>This parameter is for testing.</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>LogFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

JSP ( JavaServerPages )

JSP – это технология, которая упрощает создание web страниц с динамически изменяющимся (во время генерации страницы) содержимым.

<html>

<body>

<p>HI<%= (request.getParameter("name")!=null) ? ", " + request.getParameter("name"):"" %>!!!</p>

</body>

</html>


JSP файл – это текстовый документ, содержимое которого можно разбить на две части:

l статический текст (каркас) – создается при помощи специальных редакторов.

l динамический (генерируемый во время выполнения страницы) – обычно пишется в среде разработки программирования.

Принцип работы (рис. 6):

Рисунок 6 – Принцип работы

l JSP-файл транслируется в файл java.

l Процесс трансляции управляется директивами (<%@ page […] %>).

l Полученный файл компилируется в класс сервлета.

l Далее с ним идет работа как с сервлетом.

l Конфигурация сервера может включать ряд настроек по работе с jsp-страницами.


Обработка ошибок

• Во время трансляции и компиляции

l поведение зависит от используемого сервера;

l класс сервлета создан не будет.

• Во время выполнения

l если для данной JSP страницы (или приложения) определена «страница на случай ошибки» (errorPage), то будет выведена указанная страница;

l иначе – в зависимости от сервера и его настроек.

Виды JSP:

• JSP-страница

l Это страница из статических и динамических элементов.

l Статическая часть имеет произвольный формат.

• JSP-документ

l XML-файл, содержащий тэги особого вида.

l Имеет ту же функциональность, что и JSP-страница, но требует представления в виде тэгов ряда элементов.

Создание страницы

• Создание статического содержимого. Для этого удобно использовать редакторы HTML, XML и пр.

• Вставка динамических объектов и элементов сценариев JSP. В созданный файл вставляются элементы <%? […] %>

Элементы JSP- страницы

• Статический текст

• Элементы сценариев

l Комментарии          <%-- […] --%>

l Объявления            <%! […] %>

l Скриптлеты            <% […] %>

l Выражения                      <%= […] %>

l Директивы              <%@ ? […]%>

• Стандартные объекты.

Комментарии

• <%-- […] --%>

• Содержат текст, который не будет включен в отклик страницы.

• Содержимое комментария игнорируется транслятором.

• Не путайте с комментариями HTML
<!-- […] -->


Пример 14. JSP- страницаскомментариями

JSP-страница

<html><body>

Hello World!

<%-- This is a JSP comment --%>

<!-- This is a HTML comment -->

</ body ></ html >

Фрагмент примерного кода сервлета

out.write("<html><body>\n Hello World!\n ");

out.write("\n <!-- This is a HTML comment -->"

+ "\ n </ body ></ html >\ n ");

Объявления

• <%! […] %>

• Обычно содержат объявления переменных, методов, классов и интерфейсов.

• При трансляции преобразуются в элементы класса сервлета (поля, методы и вложенные типы).

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

• При работе с внутренними классами есть особенности.

Пример 15. JSP -страницасобъявлениями

JSP-страница

<%!

private String str = "Message: ";

public String createMessage(String arg) {

   returnstr + arg ;

}

%>

Фрагмент примерного кода сервлета

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase

implements org.apache.jasper.runtime.JspSourceDependent {

private String str = "Message: ";

public String createMessage(String arg) {

   return str + arg;

}

Скриптлеты

• <% […] %>

• Содержат динамически выполняемый код.

• Преобразуются во фрагменты методов сервлета, формирующих отклик.

• Синтаксически являются фрагментами обычных Java-методов.

• Каждая завершенная инструкция заканчивается знаком точки с запятой.

Пример 16. JSP -страницасо скриптлетами

JSP-страница

<html><body>

<% String server_name = System.getProperty("os.name");

if (server_name == null)

server_name = "Undefined."; %>

</ body ></ html >

Фрагмент примерного кода сервлета

out.write("<html><body>\n");

String server_name = System.getProperty("os.name");

if (server_name == null)

server_name = "Undefined.";

out.write("\n");

out.write("</body></html>\n");

Выражения

• <%= […] %>

• Содержит выражения, значения которых будут выведены в отклик.

• Синтаксически являются вычислимыми выражениями Java, для которых может быть получено текстовое представление.

• В конце выражений точки с запятой нет!

Пример 17. JSP -страницас выражениями

JSP-страница

<html><body>

OS Name: <%=server_name%>

<br><%=createMessage("It works!")%>

</body></html>

Фрагмент примерного кода сервлета

out . write ("< html >< body >\ n ");

out.write("OS Name: ");

out.print(server_name);

out.write("\n");

out.write("<br>");

out.print(createMessage("It works!"));

out.write("\n");

out.write("</body></html>\n");

Директива page

• <%@ page […] %>

• Позволяет управлять процессом трансляции JSP-страницы в сервлет.

• Часто используемые параметры:

l Тип отклика и кодировка.

l Автоматическая инициализация сессии.

l Импортируемые типы.

l Страница для обработки ошибок:

o Является ли данная страница обработчиком.

o Какая страница используется как обработчик.

Пример 18. Тип отклика, кодировка и импорт типов

JSP-страница

<%@page contentType="text/html; charset=UTF-8"%>

<%@page session="true"%>

<%@page import="java.util.* , java.lang.reflect.* " %>

Фрагмент примерного кода сервлета

importjava . util .*;

import java.lang.reflect.*;

...

response.setContentType("text/html; charset=UTF-8");

session = pageContext.getSession();

...

Дата: 2019-02-19, просмотров: 313.