Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: Migrated to Confluence 5.3

Теоретические вопросы к коллоквиуму №1

  1. Web-контейнер, Servlet, JSP.  Структура, назначение и пример сервлета или JSP.
  2. Шаблон Модель-Представление-Контроллер.  Роли компонент и зависимости между ними.  Пример  на одной из Java-реализаций.
  3. Типовая структура Enterprise приложения. Слои, зоны ответственности  и зависимости между слоями. Пример (названия классов и методов слоев).
  4. Шаблон «Инверсия управления». Назначение и пример.
  5. Технологии работы с базой данных из Java. Особенности работы с соединениями с базой данных из Web-приложения. Пример.

Типы задач к коллоквиуму №1 по Java

...

Комментарии: Обратите внимание на использование BigDecimal для хранения чисел, установку точности (setScale(2)) , особенно при выполнения операций деления.

 

 2. Релизуйте класс корзины интернет-магазина (другого объекта предметной области) по заданному интерфейсу: 

 

Блок кода
languagejava
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 зависимостей:

Блок кода
languagejava
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 );
 }
}

...