Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java EE (J2EE)

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

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

03.12.2016, 20:55. Просмотров 521. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2016, 20:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предлагаю посмотреть учебный проект, созданный для освоения темы Сервлеты и jdbc (Java EE):

JDBC, tomcat, сервлеты - Java EE
С этими вещами сталкиваюсь первый раз, учусь. Был проект сделанный с DAO, там были базовые CRUD операции, все работало. В итоге сделал...

Сервлеты, слушатели, jdbc - Java EE
Такое дело, необходимо выполнить учебный проект - веб приложение, студенты, пары, преподы и т.д. Использовать сессии, слушатели, шаблон...

Проект не видит сервлеты - Java
Этот вопрос наверное всех одолел !!! Короче,создан проект.Запустил на машине Tomcat всей конторой протестировали - работает...

Построит проект на ORM или на обычном JDBC? - Java EE
Здравствуйте, всем! Ребята поделитесь опытом! что лучше использовать точнее на чем лучше построит проект на ORM или на обычном JDBC? ...

Как научиться решать рекуррентные уравнения? Что нужно знать для освоения этой темы? - Математика
Как научиться решать рекуррентные уравнения? Что нужно знать для освоения этой темы? Пожалуйста, подскажите книги/статьи/что...

проект созданный в более ранней версии VS запускается, а созданный проект в VS 10 с теми же исходниками не запускается - Графика и игры
Собственно, вопрос в заголовке. Скачал я урок по OpenGL от NeHe (урок 22), решил запустить у себя в VS10 - получилось (но только, vs...

9
KEKCoGEN
Эксперт Java
1963 / 1838 / 442
Регистрация: 28.12.2010
Сообщений: 7,381
03.12.2016, 21:24 #2
Цитата Сообщение от proton2 Посмотреть сообщение
Моей целью было показать как можно работать с сервлетами и Jdbc
вы опоздали лет на 7 где-то. Кому сейчас сервлеты нужны?
0
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
03.12.2016, 22:19  [ТС] #3
В реальном проекте да, не нужны никому.

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

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

Добавил возможность импортировать рабочие задачи из excel файлов в базу из web интерфейса.
0
Fene4ka_
91 / 91 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
12.12.2016, 00:54 #8
мне кажется или плодить контроллеры так себе идея ? почитайте про слой command, мне кажется, что сервлеты без него не пишутся
0
proton2
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 15
08.01.2017, 20:39  [ТС] #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

Посмотрите пожалуйста, где что можно улучшить / переделать?
0
KEKCoGEN
Эксперт Java
1963 / 1838 / 442
Регистрация: 28.12.2010
Сообщений: 7,381
09.01.2017, 09:59 #10
proton2, вам никто не говорил что рефлексия это медленно и плохо?
0
09.01.2017, 09:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 09:59
Привет! Вот еще темы с ответами:

Проект, созданный в Windows сохранить для OS X - C#
Здравствуйте. Создаю проект в Windows. Подскажите, как его сохранить, чтобы он работал по OS X? Возможно ли это?

Учебный проект - C#
Доброго времени суток =) Народ дайте пожалуйста ссылочку на какой-нибудь проект с подробными комментариями (что как и зачем) чтоб...

Учебный проект - C++
Хочу решить небольшой учебный проект для того чтобы разобраться с одномерными массивами и который будет покрывать следующие темы: циклы,...

Хочу посмотреть на ваши темы и программы на дипломное проектирование - Delphi
Хочу посмотреть на ваши темы и программы на дипломное проектирование! Да я самый дерзкий и не иду в фриланс те кто такие же дерзкие...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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