
- •По курсу «Интернет-программирование»
- •Принципы построения интернет-приложений на Java
- •Сервлеты (Servlet) и jsp
- •Сервлеты
- •Синтаксис jsp-страницы
- •Комментарии
- •Директивы
- •Объявления
- •Выражения
- •Скриплеты
- •Объекты request, response, cookie, session
- •Загрузка файлов на сервер
- •Объект request
- •Объект response
- •Объект cookie
- •Объект session
- •Приложение 2
Объявления
Объявления (Declarations) предназначены для определения переменных и методов на языке скриптов, которые в дальнейшем используются на странице JSP. Синтаксис declarations имеет следующий вид :
<%! код Java %>
Обычно объявления группируются вверху страницы JSP и содержат объявления всех переменных и методов используемых на странице.
Пример блока объявлений:
<%!
int n = 100;
String temp;
String m = "MIET";
%>
Выражения
Выражения JSP применяются для вывода данных в тело страницы. Все выражения, вне зависимости от сложности их содержимого, вычисляются в один результат или число. Выражения не должны заканчиваться «;». Фактически результат выражения вставляется как аргумент в response.println.
Примеры выражений:
Текущее время: <%= new java.util.Date() %>
Наш ВУЗ: <%= 'МИЭТ' %>
Скриплеты
Скриплеты JSP применяются для вставки исполняемого кода на Java. Скриплеты могут производить вычисления и осуществлять вывод
Пример скриплета, выводящего все поля и их значения переданные из формы в страницу JSP
<%@ page import="java.util.*" %>
<h1>Получены данные</h1>
<%
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) {
String name = e.nextElement();
out.println(name+"="+request.getParameter(name)+"<br>");
}
%>
<hr>
Объекты request, response, cookie, session
Request
Объект request предназначен для получения данных приходящих в запросе: заголовков, полей (форм), ключиков (cookies) и других данных.
Основными методами для получения данных являются:
request.getParameterNames() – получение списка всех полей формы
request.getParameter(Имя) – получение значения поля формы по имени поля
request.getCookies – получение массива ключиков
request.getHeaderNames() – получение списка заголовков вопроса
request.getHeader(Имя) – получение содержания поля заголовка по имени
Для перебора списка полей формы и заголовков требуется подключение gfrtnf java.util.*
Полный список методов объекта request приведен в приложении 1.
Листинг 3. Пример вывода таблицы со значениями всех заголовков запроса
<%@ page import="java.io.*,java.util.*" %>
<html>
<body>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Header Name</th><th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</body>
</html>
Response
Объект response используется для вывода информации в ответ сервера на запрос клиента. В JSP этот объект часто используется в виде out.println(“текст”), где out неявно созданный от response объект PrintWriter. Синтаксис создания: PrintWriter out = response.getWriter().
Основным методами объекта out является print и println.Пример использования out можно посмотреть в листинге 3, а полный список методов объекта response приведен в приложении 1.
Cookie
Объект cookie, как следует из его названия, предназначен для работы с ключиками. Для чтения данных этот объект использует массив объектов ключиков, возвращаемый методом requet.getCookies. Для установки значения ключика, объект может использоваться индивидуально — см. Листинг 4.
Основными методами этого объекта являются:
getName – получение имени ключика
getValue — получениезначения ключика
setValue — установка нового значения ключика
Полный список методов объекта cookie приведен в приложении 1.
Листинг 4. Вывод значений всех ключиков
<%
//Выбор значений всех ключиков
Cookie cookies [] = request.getCookies ();
for (int i = 0; i < cookies.length; i++) {
out.println(cookies[i].getName()+"="+cookies[i].getValue()+"<br>");
}
%>
При установки значения ключика следует учитывать, что оно должно быть установлено до вывода содержимого страницы т.е. до тега <html>. Добавление ключика к ответу сервера производится с помощью метода addCookie объекта request см. листинг 5.
Листинг 5. Установка значения ключика
<%
Cookie cookie = new Cookie("key","value");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
%>
Session
Объект session служит для организации взаимодействия между клиентом и сервером и между jsp страницами на сервере в рамках одной сессии.
Для включения режима отслеживания сессиии необходимо в jsp страницу добавить директиву <%@page session="true" %>. После этого в одной странице JSP можно читать данные, установленные в другой JSP странице и получать прочие данные сессии. Полный список методов и свойств объекта session приведен в приложении 1.
Листинг 6. Пример установки и чтения значений в разных JSP файлах
Файл request.jsp
<%@page session="true" %>
<%
//Устанавливаем переменную в сессию
session.setAttribute("userID", 10);
%>
Файл response.jsp
<%@page session="true" %>
<% //Читаем переменную из сессии %>
Получено из сессии <%= session.getId()%>: userID = <%= session.getAttribute("userID") %>