Форум программистов, компьютерный форум CyberForum.ru

Java EE (J2EE)

Войти
Регистрация
Восстановить пароль
 
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
#1

Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc - Java EE

03.12.2016, 20:55. Просмотров 487. Ответов 9
Метки нет (Все метки)

В интернете я не встречал нормальных примеров которые хорошо показывают работу Java сервлетов. Все что я видел - это примитивные CRUD приложения с 1 сущностью. Такие примеры не дают понимания как все работает в комплексе.

Я создал учебный проект для того чтобы в комплексе освоить работу Java сервлетов и JDBC DAO в более сложной модели данных чем просто 1 сущность. Без применения Spring и ORM, только чистые Java servlets и JDBC.

Функционал учебного приложения:
- Авторизация пользователя по паролю, разграничение доступа по ролям;
- Кеширование сущностей. Применение Echcashe для кеширования сущностей;
- Разделение представлений. Отдельные View и DAO для загрузки и отображения списочных форм (light view), отдельные View и DAO для загрузки и отображения карточки объекта (full view);
- Организация работы с DAO. dao factory выдает нужное DAO по заданному парамету. Т.е. нужное DAO не создается каждый раз по new, вместо этого dao выдает фабричный метод. в DAO показана работа с коллекциями, примитивными типами, enum-ами.
- Функционал загрузки файлов. Файлы загружаются и хранятся на диске, а имена файлов и путь к ним сохраняются в БД.
- Логирование различных событий с помощью SL4j. Различные события логируются в различные файлы.

Я не стал наворачивать более сложный функционал. Моей целью было показать как можно работать с сервлетами и Jdbc в проекте посложнее чем просто 1 сущность, сделать для себя точку старта в сервлетах и jdbc.

Модель данных (кратко):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
User extends Model{
    String firstName;
    String lastName;
    String caption;
    String email;
    String login;
    String password;
    UserRole role;
 
    Collection<WorkTask> userTasks;
}
 
WorkTask extends Model {
    User taskUser;
    String caption;
    String taskContext;
    Date taskDate;
    Date deadLine;
    TaskStatus taskStatus;
    
    Collection<Attach> attaches;
}
 
WorkNote extends Model{
    String caption;
    Date noteDate;
    String description;
 
    WorkTask subject;
    User noteUser;
}
 
Attach extends Model{
    String fileName;
    String caption;
    WorkTask workTask;
}
Предметная область: web-приложение, которое создает задачи пользователям со сроками исполнения. А-ля Jira.

Буду признателен за Ваши замечания и рекомендации к исправлению.

https://github.com/proton2/ServletJdbcExample

Борис Яценко


Добавлено через 38 минут
вход по root/root
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2016, 20:55     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc
Посмотрите здесь:
JDBC, tomcat, сервлеты Java EE
Java EE Сервлеты, слушатели, jdbc
Построит проект на ORM или на обычном JDBC? Java EE
Сервлеты Java EE
Java EE Сервлеты
Java EE Сервлеты и jsp
Сервлеты + JSP Java EE
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KEKCoGEN
Эксперт Java
1909 / 1787 / 434
Регистрация: 28.12.2010
Сообщений: 7,213
03.12.2016, 21:24     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #2
Цитата Сообщение от proton2 Посмотреть сообщение
Моей целью было показать как можно работать с сервлетами и Jdbc
вы опоздали лет на 7 где-то. Кому сейчас сервлеты нужны?
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
03.12.2016, 22:19  [ТС]     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #3
В реальном проекте да, не нужны никому.

Но на собеседованиях про сервлеты спрашивают. Многие фреймворки основаны на Servlet API, поэтому основы знать требуется.
В данном учебном проекте в связке с сервлетами демонстрируется еще и работа с DAO, основанным на jdbc.
magirus
Супер-модератор
Эксперт по компьютерным сетямЭксперт Windows
26428 / 14730 / 836
Регистрация: 15.09.2009
Сообщений: 64,002
Записей в блоге: 68
03.12.2016, 22:24     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #4
может перенести тему в "проекты"?
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
03.12.2016, 22:49  [ТС]     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #5
Сделайте как Вам виднее.
ninjacut
149 / 149 / 44
Регистрация: 30.04.2016
Сообщений: 321
04.12.2016, 12:34     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #6
proton2, Бегло взглянул - проблемы: @Override методы с пустым содержимым (вообще не понял зачем все дао с одним интерфейсом, и по половине имплементаций не реализовано, если нет смысла в этих методах - значит интерфейс не подходит), catch блоки которые просто съедают exception-ы, куча логики в контроллерах - для этого надо делать сервисы (особенно гигантский блок else if в WorkTaskController). Все это я бы исправил.
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
10.12.2016, 21:32  [ТС]     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #7
Большое спасибо за замечания!

Небольшое обновление.

Добавил возможность импортировать рабочие задачи из excel файлов в базу из web интерфейса.
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
12.12.2016, 00:54     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #8
мне кажется или плодить контроллеры так себе идея ? почитайте про слой command, мне кажется, что сервлеты без него не пишутся
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
08.01.2017, 20:39  [ТС]     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #9
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
мне кажется или плодить контроллеры так себе идея ? почитайте про слой command, мне кажется, что сервлеты без него не пишутся
Большое спасибо за совет! Знаю такую штуку когда сервлет всего 1, далее все действия обрабатываются как команды. Позже я подумаю над реализацией этого.

Сейчас хотел предложить посмотреть (и раскритиковать) как я облегчил работу с JDBC.
Удалось уйти от ручного разбора ResultSet'а. С помощью рефлексии объекты entity автоматически конструируются из ResultSet, в том числе и ссылочные поля.
Так же при insert и update при инициализации PreparedStatement мы не указываем явно каждое поле ps.setLong(1, ...). Вместо этого отдаем в сервисный метод весь объект, сервисный метод с помощью рефлексии разбирает каждое поле и инициализирует PreparedStatement. Это позволило существенно сократить код DAO методов.

Класс маппера https://github.com/proton2/ServletJd...SetMapper.java
Конечно коряво выглядит сохранение Enum в виде строки в БД, но если вместо этого значение enum хранить не в строке а в числовом виде, то не удается рефлексией инициализировать Enum поле. А когда Enum сохранен как строка, то само значение инициализируется рефлексией без проблем Enum.valueOf(clazz, columnValue.toString())
Class clazz = field.getType();
BeanUtils.setProperty(bean, field.getName(), Enum.valueOf(clazz, columnValue.toString()));

Пример реализации DAO с использованием данного метода
https://github.com/proton2/ServletJd...rkNoteDao.java

Посмотрите пожалуйста, где что можно улучшить / переделать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 09:59     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc
Еще ссылки по теме:
Java Сервлеты Java EE
JSP и сервлеты Java EE
Java EE JSP и сервлеты
Java EE Сервлеты и Spring MVC
Томкат не видит сервлеты Java EE

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
KEKCoGEN
Эксперт Java
1909 / 1787 / 434
Регистрация: 28.12.2010
Сообщений: 7,213
09.01.2017, 09:59     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc #10
proton2, вам никто не говорил что рефлексия это медленно и плохо?
Yandex
Объявления
09.01.2017, 09:59     Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru