web-programmirovanie_metodicheskie_ukazania
.pdfМетодические указания по выполнению лабораторных работ по разработке web-приложений (2014)
журналы:
void log(String msg) — запись сообщения в журнал web-сервера.
void log(String message, Throwable t) — запись в журнал web-сервера сообщения об ошибке.
По умолчанию журналы находятся в папке «log» сервера.
6.2.2. Фильтры
Интерфейс фильтров — javax.servlet.Filter. Основные методы:
public void init(FilterConfig filterConfig) - инициализация фильтра. public void doFilter(ServletRequest request, ServletResponse
response, FilterChain chain) - исполнение фильтра. public void destroy() - уничтожение фильтра.
Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html
Настройка фильтров осуществляется в дескрипторе развертывания web.xml, там указываются имя фильтра, на какие страницы/сервлеты он действует и каким классом реализуется.
<filter> <display-name>LogFilter</display-name> <filter-name>LogFilter</filter-name>
<filter-class>etu.edu.web.LogFilter</filter-class> </filter>
<filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/auth.jsp</url-pattern>
</filter-mapping>
Простейший класс реализации фильтра, обеспечивающий вывод ip-адреса пользователя и URL, к которому он обращается приведён ниже:
public class LogFilter implements Filter { private ServletContext conteхt; public LogFilter() {}
public void destroy() {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chаin) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest)
request;
String ip = httpReq.gеtRemotеAddr(); String uri = httpReq.gеtRequestURI();
- 31 -
Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)
context.log("ip: " + ip + ", uri: " + uri);
сhain.doFilter(request, rеspоnsе);
}
public void init(FilterConfig сonfig) throws ServletException
{
context = config.getServletContext();
}
}
Рекомендуется в лабораторной работе создать класс фильтрации с использованием «Wizard» (мастера NetBeans) и затем скорректировать логику работы фильтра.
6.2.3. AJAX-запрос
Для выполнения AJAX-запроса необходима функция, которая обеспечит асинхронное получение данных от сервера.
<script>
function loadXMLDoc() { var xmlhttp;
if (window.XMLHttpRequest)
// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest();
else // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) // Action to do
document.getElementById("RESULT").innerHTML=xmlhttp.respo nseText;
}
xmlhttp.open("GET","SERVER_URL",true); xmlhttp.send();
}
</script>
В данном примере обращение происходит к SERVER_URL, в качестве результата ожидается HTML, который записывается в тег с идентификатором RESULT. По адресу SERVER_URL может находиться сервлет или JSP-страница, которые генерируют не целую страницу, а фрагмент HTML.
Для работы скрипта необходимо определить DIV для хранения результата и объект или таймер, который будет вызывать AJAX-запрос.
- 32 -
Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)
<div id="RESULT">Текст для замены</div>
<button type="button" onclick="loadXMLDoc()">Вызов AJAXзапроса</button>
6.2.4. Таймеры в JavaScript
В JavaScript есть возможность создавать и останавливать таймеры.
Создание таймера: setInterval(function(){FUNCTION_NAME()},TIME_INTERVAL).
<script>
var myVar = setInterval(function(){myTimer()},1000); function myTimer() {
...
}
</script>
Остановка таймера: clearInterval(TIMER_NAME).
<button onclick="clearInterval(myVar)">Stop time</button>
6.3. Решение задач лабораторной работы
Дополнительных методов не требуется. Достаточно будет правильно выполнить основные этапы.
6.4. Задание
Необходимо реализовать журналирование всех действий пользователя и донастроить «Личный кабинет». Основные требования:
1.Все действия пользователя в интернет-магазине журналируются (в журнале указаны дата действия, на какой странице оно было выполнено, описание действия, его параметры). Журнал ведётся с использованием штатных средств Log4j.
2.В «Личном кабинете» реализована возможность оставлять свои комментарии и впечатления от использования интернет-магазина. Страница сохранения комментариев и их просмотра работает с использованием AJAX (страница не перезагружается после добавления комментария, комментарий немедленно отображается в списке комментариев пользователя), комментарии пользователя сохраняются в БД с использованием Hibernate. Для каждого комментария в БД хранятся дата-время и текст.
3.В «Личном кабинете» отображаются текущие дата и время с учётом локализации.
4.Все страницы поддерживают локализацию.
Заключение
В результате выполнения всех лабораторных работ у студента должен получиться интернет-магазин, оформленный в едином стиле, поддерживающий локализацию, просмотр и заказ товаров.
- 33 -
Методические указания по выполнению лабораторных работ по разработке web-приложений (2014)
Следует обратить внимание на оформление кода: должны в отдельных папках храниться рисунки, скрипты, файлы стилей, защищаемые паролем страницы и не защищаемые.
Настоятельно рекомендуется оформлять программный код с использованием соглашений о стиле программирования на Java:
http://www.literateprogramming.com/javaconv.pdf
После успешного выполнения всех лабораторных работ преподавателю необходимо предоставить:
1.архив проекта со всеми исходными кодами;
2.архив БД;
3.«скриншоты» всех страниц web-приложения;
4.руководство пользователя интернет-магазина.
Оглавление |
|
Лабораторная работа №1. Разработка приложений с использованием сервлетов ............... |
3 |
Лабораторная работа №2. Разработка приложений с использованием Java Server Pages |
|
(JSP) ........................................................................................................................................... |
10 |
Лабораторная работа №3. JSP Standard Tag Library, JSP Expression Language................... |
16 |
Лабораторная работа №4. Авторизация пользователя.......................................................... |
21 |
Лабораторная работа №5. Работа с базой данных ................................................................ |
24 |
Лабораторная работа №6. Журналирование и AJAX-запросы ............................................ |
30 |
Заключение ............................................................................................................................... |
33 |
- 34 -