Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
201
Добавлен:
17.04.2018
Размер:
684.54 Кб
Скачать

ИП. Сервлеты и JSP. Работа сервлетов

МИЭТ, 2017

Контекст сервера

Информация о контексте сервера доступна в любое время через объект ServletContext. Сервлет может получить этот объект, вызывая метод

getServletContext() объекта ServletConfig.

Некоторые, часто используемые, методы контекста сервлета

Метод

Описание

GetMimeType ()

Возвращает тип MIME данного файла.

getRealPath ()

преобразует относительный или виртуальный путь в

 

новый путь относительно месторасположения корня

 

HTML-документов сервера.

getServlet ()

Возвращает объект Servlet указанного имени.

 

Полезен при доступе к службам других сервлетов.

getServletNames ()

Возвращает список имен сервлетов, доступных в

 

текущем пространстве имен.

log ()

Записывает информацию в файл регистрации

 

сервлета. Имя файла регистрации и его формат

 

зависят от сервера.

ИП. Сервлеты и JSP. Работа сервлетов

МИЭТ, 2017

Пример записи сообщения в лог во время инициализации сервлета

import java.io.*; import javax.servlet.*;

public HelloMiet implements Servlet

{

private ServletConfig config;

public void init (ServletConfig config) throws ServletException

{

this.config = config;

ServletContext sc = config.getServletContext(); sc.log( "Started OK!" );

}

}

ИП. Сервлеты и JSP. Работа сервлетов

МИЭТ, 2017

Объект Cookie

Основными методами этого объекта являются:

getName – получение имени ключика getValue — получениезначения ключика

setValue — установка нового значения ключика

Пример кода выбора значений всех ключиков

//Выбор значений всех ключиков Cookie cookies [] = request.getCookies (); for (int i = 0; i < cookies.length; i++) {

out.println(cookies[i].getName()+"="+cookies[i].getValue()+"<br>");

}

Пример кода установки значения ключика

Cookie cookie = new Cookie("key","value"); cookie.setMaxAge(60*60*24); response.addCookie(cookie);

ИП. Сервлеты и JSP. Работа сервлетов

МИЭТ, 2017

Некоторые параметры сервера можно переопределить в конфигурационном файле приложения — web.xml.

Пример переопределения врмени сессии и создание параметра file-upload для указания пути хранения временных файлов

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-

app_3_1.xsd">

<session-config> <session-timeout>

30 </session-timeout>

</session-config>

<context-param>

<description>Location to store uploaded file</description> <param-name>file-upload</param-name>

<param-value>

C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\temp\

</param-value> </context-param>

</web-app>

Получение в JSP в переменную fileTemp пути, где хранятся временные файлы

<%

ServletContext context = pageContext.getServletContext();

String fileTemp = context.getInitParameter("file-upload");

%>

ИП. Сервлеты и JSP. Работа сервлетов

МИЭТ, 2017

Для того, чтобы сервлет правильно работал на сервере, необходимо подготовить описание сервлета в файле web.xml. Теги файла web.xml показаны ниже:

<servlet> - блок, описывающий сервлеты <display-name> - название сервлета <description> - текстовое описание сервлета

<servlet-name> - имя сервлета <servlet-class> - класс сервлета

<init-param> - блок, описывающий параметры инициализации сервлета <param-name> - название параметра

<param-value> - значение параметра

<servlet-mapping> - блок, описывающий соответсвие url и запускаемого сервлета

<servlet-name> - имя сервлета

<url-pattern> - описывает url-шаблон

<session-config> - блок, описывающий параметры сессии <session-timeout> - максимальное время жизни сессии

<login-config> - блок, описывающий параметры, как пользователь будет логиниться к серверу <auth-method> - метод авторизации (BASIC, FORM, DIGEST, CLIENT-CERT)

<welcome-file-list> - блок, описывающий имена файлов, которые будут пытаться открыться при запросе только по имени директории (без названия файла). Сервер будет искать первый существующий файл из списка и загрузит именно его

<welcome-file> - имя файла

<error-page> - блок, описывающий соответствие ошибки и загружаемой при этом страницы <error-code> - код произошедшей ошибки

<exception-type> - тип произошедшей ошибки <location> - загружаемый файл

<taglib> - блок, описывающий соответствие JSP Tag library descriptor с URI-шаблоном <taglib-uri> - название uri-шаблона

<taglib-location> - расположение шаблона

ИП. Сервлеты и JSP. Работа сервлетов. Пример web.xml файлаМИЭТ, 2017

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web- app_3_1.xsd">

<servlet> <servlet-name>authorisation</servlet-name> <servlet-class>servlets.authorisation</servlet-class>

</servlet>

<servlet> <servlet-name>NewServlet</servlet-name> <servlet-class>servlets.NewServlet</servlet-class>

</servlet> <servlet-mapping>

<servlet-name>authorisation</servlet-name> <url-pattern>/user/profile/auth.php</url-pattern>

</servlet-mapping> <servlet-mapping>

<servlet-name>NewServlet</servlet-name> <url-pattern>/NewServlet</url-pattern> <url-pattern>/TestServlet?Year=2017</url-pattern>

</servlet-mapping> <session-config>

<session-timeout> 30

</session-timeout> </session-config> <context-param>

<description>Location to store uploaded file</description> <param-name>file-upload</param-name> <param-value>

C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\temp\ </param-value>

</context-param> </web-app>

ИП. Сервлеты и JSP. Идея JSP

МИЭТ, 2017

Как было замечено выше неудобствами сервлетов является:

Громоздкость кода вывода через out.println

Необходимость компилировать весь сервлет при изменении даже незначительной части, не влияющей на логику приложения, например добавить out.println(«<hr>»);

Невозможность использовать для разработки пользовательского интерфейса не специалистов в Java (т. е. Верстальщиков HTML и CSS)

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

ИП. Сервлеты и JSP. Архитектура приложения JSP

МИЭТ, 2017

Существует две архитектуры работы с JSP

«Чистый» JSP

- для малой и умеренной нагрузки

JSP+Сервлеты

- для высокой нагрузки

 

 

Архитектура JSP+сервлеты

 

 

 

 

веб-сервер

 

 

запросы

 

Ресурсоемкий код

 

 

 

JSP

База

 

 

 

клиент

 

 

Сервлет

Данных

 

 

и другие

 

 

 

 

 

JSP

 

ресурсы

 

 

 

 

 

ответы

 

 

 

ИП. Сервлеты и JSP. Cинтаксис JSP

МИЭТ, 2017

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

<%--

Document : response

Created on : 05.05.2017, 15:19:39 Author : Андрей

--%>

<%@page session="true" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.util.*"%>

<%@include file="functions.jsp" %> <!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title>

</head>

<body>

<h1>Получены данные</h1> <%

for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) { String name = e.nextElement(); out.println(name+"="+request.getParameter(name)+"<br>");

}

%>

<hr>

Получено из сессии: userID = <%= session.getAttribute("userID") %> <hr>

<%

ServletContext context = pageContext.getServletContext(); String filePath = context.getInitParameter("file-upload");

%>

Путь, где хранятся временные файлы <%= filePath%> </body>

</html>

ИП. Сервлеты и JSP. Cинтаксис JSP

МИЭТ, 2017

JSPфайлы в отличие от, например, PHP имеют несколько типов тегов, определяющих исполняемый Java код:

Комментарии

Директивы

Объявления

Выражения

Скриплеты

Соседние файлы в папке Интернет технологии