Теоретические вопросы к коллоквиуму №1
- Web-контейнер, Servlet, JSP. Структура, назначение и пример сервлета или JSP.
- Шаблон Модель-Представление-Контроллер. Роли компонент и зависимости между ними. Пример на одной из Java-реализаций.
- Типовая структура Enterprise приложения. Слои, зоны ответственности и зависимости между слоями. Пример (названия классов и методов слоев).
- Шаблон «Инверсия управления». Назначение и пример.
- Технологии работы с базой данных из Java. Особенности работы с соединениями с базой данных из Web-приложения. Пример.
Типы задач к коллоквиуму №1 по Java
...
Комментарии: Обратите внимание на использование BigDecimal для хранения чисел, установку точности (setScale(2)) , особенно при выполнения операций деления.
2. Релизуйте класс корзины интернет-магазина (другого объекта предметной области) по заданному интерфейсу:
Блок кода | ||
---|---|---|
| ||
public interface Basket { void addProduct(String product, int quantity); void removeProduct(String product); void updateProductQuantity(String product, int quantity); void clear(); List<String> getProducts(); int getProductQuantity(String product); } |
...
Комментарии: стоит обратить внимание на использование наиболее удобной коллекции, (тогда будет меньше кода) и на исключительные ситуации (Exceptions).
3. Релизуйте Сервлет или JSP страницу со следующим поведением:
...
Комментарии: акцент на понимание времени жизни атрибутов и параметров request, атрибутов session. Красивые формы на HTML делать не надо.
4. Реализуйте контроллер Spring MVC, который отвечает на следующие HTTP запросы (состояние системы достаточно хранить в памяти):
a. /products/list – возвращает список объектов Product
b. /products/add?product.name=MILK&product.quantity=2 – добавляет в корзину покупателя 2 пакета молока
c. /product/remove?product.name=MILK - удаляет молоко из корзины.
...
Комментарии: Тут требуется написать только класс контроллера с простейшей реализацией. Акцент на привязку параметров запроса к параметрам (объекта) метода.
5. Напишите Unit-тест(ы) для следующего класса, не вызывая при этом код @Autowired зависимостей:
Блок кода | ||
---|---|---|
| ||
public class WebPurchaseService { @Autowired PurchaseDao purchaseDao; @Autowired PurchaseValidator purchaseValidator; public PurchaseConfirmation executePurchase(Purchase purchase) { if (!purchaseValidator.validate(purchase)) { throw new PurchaseException("НеверныйIncorrect заказorder", purchase); } purchaseDao.save(purchase); return new PurchaseConfirmation( purchase ); } } |
...